正则表达式替换&与&

use*_*979 4 regex perl

我有一个字符串,其中包含以下内容.

"This R&M & Exapmle  . It is very big & Complicated &146; example."
Run Code Online (Sandbox Code Playgroud)

我想替换&,&但当我使用时$str =~ s/&/&/ig;给出以下输出.

"This R&M & Company  . It is very big & CMM Level3 &146; Organization."
Run Code Online (Sandbox Code Playgroud)

我期待着这一个.

"This R&M & Company  . It is very big & CMM Level3 &146; Organization."
Run Code Online (Sandbox Code Playgroud)

请帮帮我,我不知道如何解决它.

Eug*_*ash 11

您可以使用负面预测断言:

$str =~ s/&(?!\w+;)/&/g;
Run Code Online (Sandbox Code Playgroud)

  • 你可能也想避免使用数字字符引用`/&(?!\ w +; |#\ d +; | #x [\ da-f] +;)/&/gi;` (2认同)

dax*_*xim 7

use HTML::Entities;
encode_entities decode_entities "This R&M & Exapmle  . It is very big & Complicated &146; example."
# returns: "This R&M & Exapmle  . It is very big & Complicated &146; example."
Run Code Online (Sandbox Code Playgroud)

&146;写错了’.如果您有更多这类错误,请在往返编码之前过滤/替换它们.