gpt4 book ai didi

regex - 为什么 "\w"不匹配 Perl 正则表达式中的 Unicode 单词字符(例如 "ğ,İ,ş,ç,ö,ü")?

转载 作者:行者123 更新时间:2023-12-05 00:00:41 24 4
gpt4 key购买 nike

为什么 "\w"不匹配 Perl 正则表达式中的 Unicode 单词字符(例如,"ğ,İ,ş,ç,ö,ü")?

我试图在正则表达式中包含这些字符 m{\w+}g .但是,它不匹配 "ğ,İ,ş,ç,ö,ü"。

我怎样才能使这项工作?

use strict;
use warnings;
use v5.12;
use utf8;

open(MYINPUTFILE, "< $ARGV[0]");

my @strings;
my $delimiter;
my $extensions;
my $id;

while(<MYINPUTFILE>)
{
my($line) = $_;
chomp($line);
print $line."\n";
unshift(@strings,$line =~ /\w+/g);
$delimiter = /[._\s]/;
$extensions = /pdf$|doc$|docx$/;
$id = /^200|^201/;
}

foreach(@strings){
print $_."\n";
}

输入文件如下:

Çidem_Şener
Hüsnü Tağlip
...



输出如下:
H�

sn�

Ta�

lip



idem_�

ener

在代码中,我尝试读取文件并获取数组中的每个字符串。 (分隔符可以是 _.\s )。

最佳答案

确保 Perl 将数据视为 UTF-8。

例如如果它嵌入在脚本本身中:

#!/usr/bin/perl

use strict;
use warnings;
use v5.12;
use utf8; # States that the Perl program itself is saved using utf8 encoding

say "matched" if "ğİşçöü" =~ /^\w+$/;

输出匹配。如果我删除 use utf8;行,它没有。

关于regex - 为什么 "\w"不匹配 Perl 正则表达式中的 Unicode 单词字符(例如 "ğ,İ,ş,ç,ö,ü")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com