【发布时间】:2013-11-09 20:27:59
【问题描述】:
我试图在 perl 中基于在某个匹配之前或之后不匹配的某个模式对字符串执行全局替换。基本上,我有一个 xml 标签,如果匹配出现在标签之前或之后的十个字符内,我想保留它,但如果没有,则删除 xml 标签。
所以,如果我有一个包含以下内容的字符串:
foo something<xml tag>bar<\xml tag> something
不会发生替换,但如果字符串是
something <xml tag>bar<\xml tag> something
它将被替换为:
something bar something
我尝试的是:
$string =~ s/(?<!foo.{0,10})<xml tag>(bar)<\/xml tag> |<xml tag>(bar)<\/xml tag>(?!.{0,10}foo)/$1/g;
但是我收到了这个错误:
Variable length lookbehind not implemented in regex
我不太确定该怎么做。帮忙?
【问题讨论】:
-
在正则表达式中查找后面必须是固定长度:stackoverflow.com/questions/3796436/…
标签: regex perl substitution