Python 正则表达式匹配标点符号,后跟空格,但有一些例外
我正试图找到一个正则表达式,它匹配标点符号(!,?,和。),后跟一个空格。我不想把前面有“先生”、“太太”等称呼的句号与之匹配 做第一部分很简单:Python 正则表达式匹配标点符号,后跟空格,但有一些例外,python,regex,Python,Regex,我正试图找到一个正则表达式,它匹配标点符号(!,?,和。),后跟一个空格。我不想把前面有“先生”、“太太”等称呼的句号与之匹配 做第一部分很简单: r“[\?!\。]” 但我正在为第二部分而挣扎。以下是我到目前为止的情况: r”(?这应该可以: (?<!(Mr)|(Ms))(?<!(Mrs))[.!?](?=\s|$) (? 下面是一个演示: In [19]: re.search(r'(?<!(Mr)|(Ms))(?<!(Mrs))[.](?=\s|$))', 'Mrs
r“[\?!\。]”
但我正在为第二部分而挣扎。以下是我到目前为止的情况:
r”(?这应该可以:
(?<!(Mr)|(Ms))(?<!(Mrs))[.!?](?=\s|$)
(?
下面是一个演示:
In [19]: re.search(r'(?<!(Mr)|(Ms))(?<!(Mrs))[.](?=\s|$))', 'Mrs. Jones!').group(0)
Out[19]: '!'
[19]中的re.search(r'(?)?
请注意,每一个不同长度的问候语都需要自己的回顾
根据OP的要求编辑:
In [78]: re.search(r'((?<!(Mr)|(Ms))(?<!(Mrs))[.])|([!?])(?=\s|$)', 'Mrs! Jones').group(0)
Out[78]: '!'
[78]中的:重新搜索(r'(?这应该可以:
(?<!(Mr)|(Ms))(?<!(Mrs))[.!?](?=\s|$)
(?
下面是一个演示:
In [19]: re.search(r'(?<!(Mr)|(Ms))(?<!(Mrs))[.](?=\s|$))', 'Mrs. Jones!').group(0)
Out[19]: '!'
[19]中的re.search(r'(?)?
请注意,每一个不同长度的问候语都需要自己的回顾
根据OP的要求编辑:
In [78]: re.search(r'((?<!(Mr)|(Ms))(?<!(Mrs))[.])|([!?])(?=\s|$)', 'Mrs! Jones').group(0)
Out[78]: '!'
[78]中的:重新搜索(r'(?这里有一个有效的:
(?
它对两种不同长度的可能性使用了两次反向后视。这里是一个有效的方法:
(?
它对两种不同长度的可能性使用了两次反向查找。如果要完整,您需要排除教授、博士、小姐、夫人、女士、先生等
Python的re
模块不允许除固定宽度的回溯之外的任何内容;因此,您需要对每个宽度执行多个回溯:
r'(?<!\bMr|\bDr)(?<!Mrs)(?<!\bProf|\bMiss)([.,;])(?= |\n|\Z)'
r'(?如果想要完整,您需要排除教授、博士、小姐、夫人、小姐、先生等
Python的re
模块不允许除固定宽度的回溯之外的任何内容;因此,您需要对每个宽度执行多个回溯:
r'(?<!\bMr|\bDr)(?<!Mrs)(?<!\bProf|\bMiss)([.,;])(?= |\n|\Z)'
r'(?您将如何修改此选项,使称呼语例外仅发生在句点之前?如果称呼语出现在“!”或“?”之前,我仍然希望进行匹配?“。如果我最初不清楚,很抱歉。@deruse已编辑。希望这有帮助。您如何修改此选项,使称呼异常只发生在句点之前?如果称呼出现在“!”或“?”之前,我仍然希望匹配。如果我最初不清楚,很抱歉。@deruse已编辑。希望这有帮助。”。