Perl正则表达式无法找到花哨的引号"

All*_*len 5 regex perl

我试图使用以下Perl正则表达式从字符串中找到花哨的引号,但它返回false.

$text = "NBN “a joint venture with Telstra”";

if ($text =~ m/“/)
{
  print "found";
}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用" \x93"ascii代码,但仍然无法正常工作.我被困在这里.

任何帮助表示赞赏.

问候,艾伦

Avi*_*Avi 4

根据您尝试匹配的字符串的编码,您可能需要执行不同的操作。查看绝对最低要求 每个软件开发人员绝对必须了解 Unicode 和字符集(没有任何借口!)

\n\n

如果输入字符串以 UTF-8 编码,那么您需要在 Perl 脚本中指定该编码 - 一种方法是使用use encoding \'UTF-8\'.

\n\n

您还可以指定use utf8是否希望脚本本身的编码为 UTF-8。不过,了解要检查的字符的代码点并直接指定它可能会更好:

\n\n
use utf8;\nuse encoding \'UTF-8\';\n\n$text = "NBN \xe2\x80\x9ca joint venture with Telstra\xe2\x80\x9d"; # Make sure to quote this string properly\n\nif ($text =~ m/\\N{U+201C}/) # \xe2\x80\x9c is the same as U+201C LEFT DOUBLE QUOTATION MARK\n{\n  print "found";\n}\n
Run Code Online (Sandbox Code Playgroud)\n