Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式匹配标点符号,后跟空格,但有一些例外_Python_Regex - Fatal编程技术网

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已编辑。希望这有帮助。”。