如何删除一行末尾两个定界符之间的字符串?

所以我想删除规则中的最后一条语句,规则结构如下:

<pattern> @rule statements go here@ @multiple rule statements@ @remain all on the same line@</pattern>

解析语句将始终位于 @ 字符之间,我想删除该行中的最后一条语句。

我可以使用正则表达式删除 @ 字符之间的所有内容:

re.sub(r'@.+?@', '', s)

当每一行彼此不同时,我怎样才能只对行中的最后一条语句实现这一点?


30秒到达战场
浏览 107回答 2
2回答

慕神8447489

(\@[^\@]+)\@?$上面的正则表达式将搜索最后一次出现的@然后向后工作以实现最后一次出现的@string@的完全匹配,在下面的示例字符串中“@remain all on the same line@”将被匹配@rule&nbsp;statements&nbsp;go&nbsp;here@&nbsp;@multiple&nbsp;rule&nbsp;statements@&nbsp;@remain&nbsp;all&nbsp;on&nbsp;the&nbsp;same&nbsp;line@

慕标琳琳

使用否定的先行断言,我们可以确保只删除最后一次出现的事件:re.sub(r'@[^@]+@(?!.*@)', '', s)(请注意,我需要更改.+?为[^@]+以显式排除@,否则它会@statements@一次匹配所有。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python