例如,如果我有一个字符串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 '