我正在尝试在给定的文本中找到大写的单词。这些词必须一个接一个地被考虑,它们必须至少有4个。
我有一个“差不多”工作的代码,但它捕获了更多:[A-Z]*(?: +[A-Z]*){4,}
。捕获组还在这些单词的开头或结尾处包含空格(如边界)。
如果你想测试它,我有一个游乐场:https://regex101.com/r/BmXHFP/2
有没有办法让示例中的正则表达式只捕获第一句中的单词?我使用的语言是Go
,它没有后视/前方。
答案 0 :(得分:2)
在正则表达式中,您只需更改*
的第二个+
:
[A-Z]*(?: +[A-Z]+){4,}
使用(?: +[A-Z]*)
时,您将匹配“空格后跟0+字母”。所以你匹配空间。将*
替换为+
时,如果后面有大写,则匹配空格。
答案 1 :(得分:1)
将*
替换为+
s,您的正则表达式只匹配第一句中的字词。
.*
也匹配空字符串。看着你的正则表达式而忽略了[A-Z]*
,剩下的就是一系列空格。使用+
可以确保每次都有至少一个大写字符。
答案 2 :(得分:1)