我正在寻找一个正则表达式,它只返回给定句子或段落中的标题案例中的单词(其中只有第一个字母大写)。
如果段落是:
France’s last serious attempt at ambitious economic reform, an overhaul of pensions and social security, was in the mid-1990s under President Jacques Chirac.
我想要匹配France
,President
,Jacques
和Chirac
。
(我在Python 3中写作)
答案 0 :(得分:1)
使用单词边界,大写字母,然后使用以下小写字母:
titleWords = re.findall(r"\b[A-Z][a-z]+", line)
像这样:
+
请参阅AST (abstract syntax tree)。
请注意,*
(至少1)优于"I"
(0或更多),因此您不会匹配单个大写字母的字词,例如"A"
和"mySpace"
。
单词边界并不是必需的,但是可以防止像\b
这样的匹配的词语无论如何都会在常规文本中发生,所以你可能会删除XMLHttpRequest
而没有不良影响
答案 1 :(得分:0)
根据正则表达式的不同,结果可能会有所不同。
对于PCRE,我建议:
/\b[A-Z][a-z]*\b/
答案 2 :(得分:0)
要处理任何语言字母,请使用unicode属性:
re.findall(r"\b\p{Lu}\p{Ll}+", inputLine)
,其中
\p{Lu}
代表任何语言的任何大写字母\p{Ll}
代表任何语言的任何小写字母