Python 只匹配正则表达式的最后一个字符
我有一些Python代码,其中包含很多re.sub()命令。在某些情况下,我想替换一个字符,但前提是它位于某些其他字符之后。下面是我目前在python中执行此操作的示例:Python 只匹配正则表达式的最后一个字符,python,regex,Python,Regex,我有一些Python代码,其中包含很多re.sub()命令。在某些情况下,我想替换一个字符,但前提是它位于某些其他字符之后。下面是我目前在python中执行此操作的示例: secStress = "[aeiou],"[-1] 所以我的输入是一个字符串,比如“a,s,I walk,I hum”,我想替换第一个逗号,但不是它前面的“a” 问题是Python不喜欢我给它一个变量作为re.sub()的输入。有没有办法写一个正则表达式,指定只匹配它的最后一个字符?如果我理解正确 >>>
secStress = "[aeiou],"[-1]
所以我的输入是一个字符串,比如“a,s,I walk,I hum”,我想替换第一个逗号,但不是它前面的“a”
问题是Python不喜欢我给它一个变量作为re.sub()的输入。有没有办法写一个正则表达式,指定只匹配它的最后一个字符?如果我理解正确
>>> import re
>>> def doit(matchobj):
... return matchobj.group()[0]
...
>>> re.sub(r'[aeiou],', doit, "a,s I walk, I hum.")
'as I walk, I hum.'
如果正则表达式匹配,则使用匹配的对象调用
doit
。无论返回的字符串是什么(必须是字符串),都将替换匹配项。您正在寻找捕获组/反向引用或正向查找解决方案:
s = "a,s I walk, I hum."
# Capturing group / backreference
print(re.sub(r"([aeiou]),", r"\1", s))
# Positive lookbehind
print(re.sub(r"(?<=[aeiou]),", "", s))
s=“我走路,我哼哼。”
#捕获组/反向引用
印刷品(参考编号(r)([aeiou]),,r“\1”,s))
#正面回顾
印刷品(参考编号r)(?)?