正则代码,用于仅从段落

时间:2017-03-11 23:49:04

标签: regex

我正在寻找一个正则表达式,它只返回给定句子或段落中的标题案例中的单词(其中只有第一个字母大写)。

如果段落是:

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.

我想要匹配FrancePresidentJacquesChirac

(我在Python 3中写作)

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}代表任何语言的任何小写字母