Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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,我有一些Python代码,其中包含很多re.sub()命令。在某些情况下,我想替换一个字符,但前提是它位于某些其他字符之后。下面是我目前在python中执行此操作的示例: secStress = "[aeiou],"[-1] 所以我的输入是一个字符串,比如“a,s,I walk,I hum”,我想替换第一个逗号,但不是它前面的“a” 问题是Python不喜欢我给它一个变量作为re.sub()的输入。有没有办法写一个正则表达式,指定只匹配它的最后一个字符?如果我理解正确 >>>

我有一些Python代码,其中包含很多re.sub()命令。在某些情况下,我想替换一个字符,但前提是它位于某些其他字符之后。下面是我目前在python中执行此操作的示例:

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)(?)?