所以我想刪除規則中的最后一條語句,規則結構如下:<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
提交
取消