获取与正则表达式python匹配的替换词

获取与正则表达式python匹配的替换词,python,regex,substitution,punctuation,Python,Regex,Substitution,Punctuation,假设我们有一个字符串:“这是一个示例。它在一个句子后不包含空格。” 和一个匹配模式:“(\.\124;,\ 124;:| |!\ 124;\)\ 124;\])(\ s*)([a-zA-Z]*)” 此模式适用于标点符号后没有空格或有多个空格可用的任何组合。如果这些条件中的任何一个匹配,它将用\1\3替换单个空格。这将输出:这是一个示例。一句话后不含空格。(用空格代替) 我的问题是:正如我们所知,。它是我们匹配的字符串及其索引位置但是我们怎样才能在它的位置上得到确切的替代品呢?我想取那个。它(点空

假设我们有一个字符串:“
这是一个示例。它在一个句子后不包含空格。
” 和一个匹配模式:“
(\.\124;,\ 124;:| |!\ 124;\)\ 124;\])(\ s*)([a-zA-Z]*)
” 此模式适用于标点符号后没有空格或有多个空格可用的任何组合。如果这些条件中的任何一个匹配,它将用
\1\3
替换单个空格。这将输出:
这是一个示例。一句话后不含空格。
(用空格代替)

我的问题是:正如我们所知,
。它是我们匹配的字符串及其索引位置但是我们怎样才能在它的位置上得到确切的替代品呢?我想取那个
。它
(点空格)。

注: 也请考虑单个行中的多个匹配的情况。

编辑:

输入:
这是文本。另一个文本。下一个案例

输出:[“.other”,“.Next”]

请使用下面的正则表达式

.*?(\.)\s*(\w*)\s
代码

重新导入
a=“这是文本。另一个文本。下一个案例”
打印([i+“”+j代表re.findall(“.*?(\)\s*(\w*)\s”,a)]中的(i,j)
输出

['. Another', '. Next']
请使用下面的正则表达式

.*?(\.)\s*(\w*)\s
代码

重新导入
a=“这是文本。另一个文本。下一个案例”
打印([i+“”+j代表re.findall(“.*?(\)\s*(\w*)\s”,a)]中的(i,j)
输出

['. Another', '. Next']

您可以将列出所有单个字符的替换项缩短为字符类
[,:;!)\124;\]]
,以匹配列出的字符之一

您可以省略
(\s*)
周围的组,因为它将被替换为一个空格,因此您将有2个捕获组,而不是3个

如果后面至少有一个字符,可以使用
+
作为量词。如果您使用asterix,它将匹配0+次。如果字符串末尾有一个点,没有任何后续内容,则只需在字符串末尾添加一个空格

([.,:;!)|\]])\s*([a-zA-Z]+)
|

要查看被替换的值,可以在组1和组2之间连接一个空格。将返回包含组1和组2的值的元组列表

比如说

import re

regex = r"([.,:;!)|\]])\s*([a-zA-Z]+)"
s = "This is text.Another text.Next case"
print(list(map(lambda x: f"{x[0]} {x[1]}", re.findall(regex, s))))
输出

['. Another', '. Next']

您可以将列出所有单个字符的替换项缩短为字符类
[,:;!)\124;\]]
,以匹配列出的字符之一

您可以省略
(\s*)
周围的组,因为它将被替换为一个空格,因此您将有2个捕获组,而不是3个

如果后面至少有一个字符,可以使用
+
作为量词。如果您使用asterix,它将匹配0+次。如果字符串末尾有一个点,没有任何后续内容,则只需在字符串末尾添加一个空格

([.,:;!)|\]])\s*([a-zA-Z]+)
|

要查看被替换的值,可以在组1和组2之间连接一个空格。将返回包含组1和组2的值的元组列表

比如说

import re

regex = r"([.,:;!)|\]])\s*([a-zA-Z]+)"
s = "This is text.Another text.Next case"
print(list(map(lambda x: f"{x[0]} {x[1]}", re.findall(regex, s))))
输出

['. Another', '. Next']

检查。@Liju请检查编辑。请检查下面我的答案检查。@Liju请检查编辑。请检查下面我的答案