Perl替代问题

Web*_*uck 0 regex perl substitution

我试图在>之后替换任何空格,除了后面的空格</a>.如何使用Perl替换运算符执行此操作?

谢谢!

zx8*_*x81 5

要删除>except 之后的空格</a>,可以使用:

$subject =~ s%(?<!</a)>\s*%>%mg;
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

  1. %是正则表达式的分隔符.他们不参加比赛.
  2. (?<!</a)是一个负面的观察背,断言"在字符串中的这个位置,背后的东西不是</a".
  3. 在断言之后,我们匹配a >和空白字符.

因此,我们匹配了一个>字符串但不是错误的字符串.

替换,表示%>%,只是一个>,允许我们摆脱空白字符.