[英]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\])
它搜索foo
由字界包围\\b
(FOO中foobar的将不匹配),后跟一个结束标记[/bar]
。 为确保没有新的开始标签,我只会将[
以外的字符与[^\\[]*
匹配。
(?=[^\\[]*\\[\\/bar\\])
是一个不匹配的前瞻性断言,仅当内部模式遵循时才向前看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.