如何删除一行末尾两个定界符之间的字符串?
How to remove a string, between two delimiters, at the end of a line?
所以我想删除规则中的最后一条语句,规则结构如下:
<pattern> @rule statements go here@ @multiple rule statements@ @remain all on the same line@</pattern>
解析语句总是在@字符之间,我想删除行中的最后一个语句。
我可以使用正则表达式删除 @ 字符之间的所有内容:
re.sub(r'@.+?@', '', s)
当每一行彼此不同时,我怎样才能只对行中的最后一个语句实现这一点?
使用 negative lookahead assertion 我们可以确保只删除最后一次出现:
re.sub(r'@[^@]+@(?!.*@)', '', s)
(请注意,我需要将 .+?
更改为 [^@]+
以显式排除 @
,否则它会立即匹配所有 @statements@
。)
(\@[^\@]+)\@?$
上面的正则表达式将搜索最后一次出现的@然后向后工作以实现最后一次出现的@string@的完全匹配,在下面的示例字符串中“@remain all on the same line@”将被匹配
@rule statements go here@ @multiple rule statements@ @remain all on the same line@
所以我想删除规则中的最后一条语句,规则结构如下:
<pattern> @rule statements go here@ @multiple rule statements@ @remain all on the same line@</pattern>
解析语句总是在@字符之间,我想删除行中的最后一个语句。
我可以使用正则表达式删除 @ 字符之间的所有内容:
re.sub(r'@.+?@', '', s)
当每一行彼此不同时,我怎样才能只对行中的最后一个语句实现这一点?
使用 negative lookahead assertion 我们可以确保只删除最后一次出现:
re.sub(r'@[^@]+@(?!.*@)', '', s)
(请注意,我需要将 .+?
更改为 [^@]+
以显式排除 @
,否则它会立即匹配所有 @statements@
。)
(\@[^\@]+)\@?$
上面的正则表达式将搜索最后一次出现的@然后向后工作以实现最后一次出现的@string@的完全匹配,在下面的示例字符串中“@remain all on the same line@”将被匹配
@rule statements go here@ @multiple rule statements@ @remain all on the same line@