如何将正则表达式中的任何内容匹配到一个字符而不包括它?



例如,如果我有一个字符串abc%12341%%c%9876,我想用空字符串从字符串中的最后%替换到末尾,我试图得到的最终输出是abc%12341%%c

我创建了一个正则表达式'.*#'来搜索最后%的含义abc%12341%%c%,然后获得最后%的索引,然后将其替换为空字符串。

我想知道是否可以使用re.sub(..)在一行中完成

使用以下正则表达式模式,然后替换为空字符串:

%[^%]*$

示例脚本:

inp = "abc%12341%%c%9876"
output = re.sub(r'%[^%]*$', '', inp)
print(output)  # abc%12341%%c

regex模式表示匹配最后的%符号,后面跟着零个或多个非%字符,直到字符串的末尾。然后我们用空字符串替换,以有效地从输入中删除该内容。

我想这叫做前瞻性匹配-如果我不是太慢的话,我会查找它:-)

(? =…)匹配如果…匹配下一个,但不消耗任何字符串。这被称为前瞻性断言。例如,Isaac (?=Asimov)只有在后面跟'Asimov'时才会匹配'Isaac '

最新更新