gpt4 book ai didi

python - 有没有办法撤消递归正则表达式操作?

转载 作者:行者123 更新时间:2023-12-01 03:01:42 25 4
gpt4 key购买 nike

如果有一个正则表达式操作进行递归替换,例如:

>>> import re
>>> pattern = re.compile(r'[?!]')
>>> s = 'what the?!'
>>> print(pattern.sub(r' \g<0> ', s))
what the ? !

有没有办法撤消递归操作?

我有这个,但它不起作用:

>>> import re
>>> pattern = re.compile(r'[?!]')
>>> s2 = pattern.sub(r' \g<0> ', s)
>>> s2
'what the ? ! '
>>> pattern2 = re.compile(r'\s[?!]\s')
>>> s3 = pattern2.sub(r'\g<0>', s2)
>>> s3
'what the ? ! '
>>> pattern2 = re.compile(r' [?!] ')
>>> s3 = pattern2.sub(r'\g<0>', s2)
>>> s3
'what the ? ! '
<小时/>

最佳答案

您必须将字符类括在括号中才能创建 group 。然后在替换过程中,您可以将整个匹配项(包括空格)替换为(不包含空格)。

>>> import re
>>> s2 = 'what the ? ! '
>>> pattern2 = re.compile(r'\s([?!])\s') # capture the punctuation part as group 1
>>> s3 = pattern2.sub(r'\g<1>', s2) # replace the matches with the captured group 1
>>> s3
'what the?!'

关于python - 有没有办法撤消递归正则表达式操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com