编写正则表达式将英语句子的第一个单词放在寄存器中

时间:2017-09-24 17:12:07

标签: python regex

编写正则表达式模式,将英语句子的第一个单词放在寄存器中。还要注意标点符号。

这是我的尝试:

[\.]\s*[A-Z] \1

我似乎无法做到这一点。我错过了什么?

1 个答案:

答案 0 :(得分:-1)

描述的模式接近我可能使用的模式。它包含一些假设和错误,但它在正确的轨道上。

[.]\s*[A-Z] \1

此模式匹配任何字符后跟0或更多空格后跟大写字母。 \ 1我假设是为了输出第一个捕获组,但你还没有指定任何捕获组。你想用括号做这件事。

句点(。)是正则表达式中的特殊字符,因此如果您想匹配句子末尾的句点,则需要查找转义句点\.。这假设所有句子都以句号结束,但情况可能并非如此。我可能会尝试一套更完整的句子终止符

[\.!\?]["']?\s+([A-Z][a-z]*)

此模式匹配任何句号,感叹号或问号,可选地后跟单引号或双引号,后跟一个或多个空格,大写字母和零个或多个小写字母的序列。它捕获最后一部分,大写字母从大写字母到最后一个小写字母。

此模式捕获除第一个句子的第一个单词之外的所有单词,它不会跟随任何标点符号。我可能会使用一个单独的模式。

^\s*([A-Z][a-z]*)

此模式仅在文本开头匹配,其中有零个或多个空格后跟一个大写单词。它捕获大写单词。