繁体   English   中英

正则表达式仅删除标记中所有出现的字符串

[英]Regex to remove all occurances of string only within tags

我需要删除所有出现的字符串,但仅当它在2个标记内时才删除。

例如,在下面的内容中,我需要删除[bar] [/ bar]标记内的foo两次出现。

foo
foo
[bar]
foo bar foo
[/bar]
foo

我正在使用PHP,我想找到一个不涉及2个步骤的解决方案(即先在[bar] [/ bar]之间搜索内容,然后进行替换)。 如果这不可能,那就没有问题,非常感谢您的帮助!

如果您的标签格式正确且没有嵌套,则可以成功完成此操作

\bfoo\b(?=[^\[]*\[\/bar\])

在Regexr上查看

它搜索foo由字界包围\\b (FOO中foob​​ar的将不匹配),后跟一个结束标记[/bar] 为确保没有新的开始标签,我只会将[以外的字符与[^\\[]*匹配。

(?=[^\\[]*\\[\\/bar\\])是一个不匹配的前瞻性断言,仅当内部模式遵循时才向前看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM