Skip to main content
 首页 » 编程设计

python之只匹配正则表达式的最后一个字符

2024年10月01日27haluo1

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

secStress = "[aeiou],"[-1] 

所以我对此的输入将是一个字符串,例如“a,s I walk, I hum.”我想替换第一个逗号,而不是它前面的“a”。

问题是 Python 不喜欢我给它一个变量作为 re.sub() 的输入。有没有一种方法可以编写一个正则表达式,指定只应匹配其最终字符?

请您参考如下方法:

您正在寻找捕获组/反向引用或积极的后视解决方案:

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

参见 Python demo .

第一种方法详细信息

([aeiou])是一个匹配元音的捕获组,并将其存储在一个特殊的内存缓冲区中,您可以使用反向引用从替换模式中引用该缓冲区。此处,组 ID 为 1,因此您可以使用 r"\1" 访问该值.

第二种方法详情

(?<=[aeiou])是一个正向后视,它只检查(但不将文本添加到匹配值)当前位置之前是否有元音。因此,只有那些以元音字母开头的逗号才被匹配,并且用空字符串替换就足以摆脱逗号,因为它是唯一保留在匹配项中的符号。