所以我想删除规则中的最后一条语句,规则结构如下:<pattern> @rule statements go here@ @multiple rule statements@ @remain all on the same line@</pattern>解析语句将始终位于 @ 字符之间,我想删除该行中的最后一条语句。我可以使用正则表达式删除 @ 字符之间的所有内容:re.sub(r'@.+?@', '', s)当每一行彼此不同时,我怎样才能只对行中的最后一条语句实现这一点?
2 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
(\@[^\@]+)\@?$
上面的正则表达式将搜索最后一次出现的@然后向后工作以实现最后一次出现的@string@的完全匹配,在下面的示例字符串中“@remain all on the same line@”将被匹配
@rule statements go here@ @multiple rule statements@ @remain all on the same line@
慕标琳琳
TA贡献1830条经验 获得超9个赞
使用否定的先行断言,我们可以确保只删除最后一次出现的事件:
re.sub(r'@[^@]+@(?!.*@)', '', s)
(请注意,我需要更改.+?
为[^@]+
以显式排除@
,否则它会@statements@
一次匹配所有。)
添加回答
举报
0/150
提交
取消