捕获组中的正则表达式负先行
regex negative lookahead in capture group
我试图捕获一串大写字符,但如果大写字母后面有小写字母,我想忽略
例如
对于字符串 ABC ABC ABC ABc
它应该捕获 ABC ABC ABC
只是因为在最后一个 AB
之后有一个小写 'c'
我尝试了 ([A-Z ]+)
,它捕获了 ABC ABC ABC AB
、
如何在这种情况下添加否定前瞻?
尝试将 [A-Z]\b
放在末尾,以确保匹配在单词右侧的单词边界处结束,而不匹配不必要的 space。请注意,这里不需要捕获组,您可以完全忽略它。
[A-Z ]+[A-Z]\b
https://regex101.com/r/j8Arzu/13
如果大写字母子字符串可能以 space 开头,则在字符串的开头使用相同的技术 - 以 \b[A-Z]
:
开头
\b[A-Z][A-Z ]*[A-Z]\b
如果你另外可能只有一个字符匹配,那么将第二个和第三个字符集[A-Z ]*[A-Z]
放入可选组:
\b[A-Z](?:[A-Z ]*[A-Z])?\b
使用单词边界 \b
来避免匹配部分单词,并使用前瞻和负后视来避免开头和结尾的空格。
(?! )\b[A-Z ]+\b(?<! )
要仅捕获连续的大写字母,您可以试试这个正则表达式:/\b[A-Z]+\b/g
我试图捕获一串大写字符,但如果大写字母后面有小写字母,我想忽略
例如
对于字符串 ABC ABC ABC ABc
它应该捕获 ABC ABC ABC
只是因为在最后一个 AB
我尝试了 ([A-Z ]+)
,它捕获了 ABC ABC ABC AB
、
如何在这种情况下添加否定前瞻?
尝试将 [A-Z]\b
放在末尾,以确保匹配在单词右侧的单词边界处结束,而不匹配不必要的 space。请注意,这里不需要捕获组,您可以完全忽略它。
[A-Z ]+[A-Z]\b
https://regex101.com/r/j8Arzu/13
如果大写字母子字符串可能以 space 开头,则在字符串的开头使用相同的技术 - 以 \b[A-Z]
:
\b[A-Z][A-Z ]*[A-Z]\b
如果你另外可能只有一个字符匹配,那么将第二个和第三个字符集[A-Z ]*[A-Z]
放入可选组:
\b[A-Z](?:[A-Z ]*[A-Z])?\b
使用单词边界 \b
来避免匹配部分单词,并使用前瞻和负后视来避免开头和结尾的空格。
(?! )\b[A-Z ]+\b(?<! )
要仅捕获连续的大写字母,您可以试试这个正则表达式:/\b[A-Z]+\b/g