Ste*_*ell 4 regex perl escaping
我从外部源获取了一堆文本,将其保存在变量中,然后将该变量显示为更大的HTML块的一部分.我需要按原样显示它,美元符号给我带来麻烦.
这是设置:
# get the incoming text
my $inputText = "This is a $-, as in $100. It is not a 0.";
print <<"OUTPUT";
before-regex: $inputText
OUTPUT
# this regex seems to have no effect
$inputText =~ s/\$/\$/g;
print <<"OUTPUT";
after-regex: $inputText
OUTPUT
Run Code Online (Sandbox Code Playgroud)
在现实生活中,这些print块是更大的HTML块,直接插入变量.
我试图逃避使用美元符号,s/\$/\$/g因为我的理解是第一个\$逃脱正则表达式以便搜索$,第二个\$是插入的内容,然后转义Perl以便它只显示$.但我无法让它发挥作用.
这是我得到的:
before-regex: This is a 0, as in . It is not a 0.
after-regex: This is a 0, as in . It is not a 0.
Run Code Online (Sandbox Code Playgroud)
这就是我想要看到的:
before-regex: This is a 0, as in . It is not a 0.
after-regex: This is a $-, as in $100. It is not a 0.
Run Code Online (Sandbox Code Playgroud)
谷歌搜索带我到这个问题.当我在答案中尝试使用数组和for循环时,它没有任何效果.
如何让块输出完全按原样显示变量?
当您使用双引号构造字符串时,变量替换会立即发生.$在这种情况下,您的字符串永远不会包含该字符.如果你想要$出现在字符串中,可以使用单引号或转义它,并注意如果你这样做,你将不会获得任何变量替换.
至于你的正则表达式,这很奇怪.它正在寻找$并替换它们$.如果你想要反斜杠,你也必须逃避它们.