我试图在&gt;之后替换任何空格除了</a>
之后的空格。如何使用Perl替换运算符执行此操作?
谢谢!
答案 0 :(得分:5)
要删除除>
之外的</a>
之后的空格,您可以使用此选项:
$subject =~ s%(?<!</a)>\s*%>%mg;
它是如何运作的?
%
是正则表达式的分隔符。他们不参加比赛。 (?<!</a)
是一个负面的后瞻,断言“在字符串中的这个位置,我背后的东西不是</a
”。 >
和空格字符。 因此,我们匹配了一个>
字符串但不是错误字符串。
由%>%
表示的替换只是>
,允许我们摆脱空白字符。
答案 1 :(得分:1)
这应该为您完成,因为它只会替换>
而不是</a>
(?<=\>)(?<!\<\/a\>)[[:space:]]
<强> REGEX101 强>
<强> PERL:强>
use strict;
use warnings;
while (<DATA>) {
$_ =~ s/(?<=\>)(?<!\<\/a\>)[[:space:]]/REPLACEMENT/gm;
print $_;
}
__DATA__
>
> Test
</a> TEST
<s m> TEST
<强>输出:强>
>REPLACEMENT
>REPLACEMENTTest
</a> TEST
<s m>REPLACEMENTTEST