我希望得到所有以大写字母开头的单词,以及每组以大写字母开头的连续单词。
例如在句子中,
奥巴马在华盛顿告诉记者,他和内塔尼亚胡都反对 伊朗呼吁“致美国之死”
我想要
[Obama, Washington, Netanyahu, Iran's, Death To America]
我试过
([A-Z][a-z]*\s)+
意思是“大写字母后跟任意数量的小写字母后跟空格,任意次。”
我虽然这可行,但事实并非如此。有什么建议吗?
答案 0 :(得分:3)
Iran's
与[A-Z][a-z]
不匹配;在您的设置中添加'
。
Death To America
完全不匹配,因为最后一个单词后面没有空格。
两者都由
确定([A-Z][a-z']*)(\s[A-Z][a-z']*)*
你没有不以资本开头的文字,而是介于两者之间;如果您想忽略这些,请使用Word Breaks:
\b([A-Z][a-z']*)(\s[A-Z][a-z']*)*\b
答案 1 :(得分:1)
答案 2 :(得分:0)
假设你喜欢最长的匹配,那么
([A-Z][\w']*(?:\s+[A-Z][\w']*)*)
申请g
,应该获得所有分组。
[A-Z][\w']*
匹配您想要匹配的单个字词。
然后
(?:\s+[A-Z][\w']*)*
将匹配此类单词的任意数量的序列。