【发布时间】:2013-03-11 14:55:08
【问题描述】:
在 Windows 7 上使用 ActiveState Perl 5.14.2 或在 CentOS 6.3 Linux 上使用 Perl 5.10.1 我正在尝试从 UTF8 文本中提取所有小写单词:
#!/usr/bin/perl -w
use strict;
use warnings;
while(<>) {
# print "$1\n" while /\b([a-z]{3,})\b/g;
print "$1\n" while /\b([\x{0430}-\x{044F}]{3,})\b/g;
}
虽然这对英语单词很有效(请参阅上面的注释行),但对于西里尔字母则失败(请参阅the Unicode range chart)- 脚本不会打印任何内容。
请问有没有人知道怎么回事?
为方便起见,下面粘贴了一个示例俄语文本:
Все смешалось в доме Облонских。 Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме。 Положение это продолжалось уже третий день и мучительно чувствовалось и самими супругами, и всеми членами семьи, и домочадцами。
【问题讨论】:
-
用
\p{Cyrillic}和\p{Lowercase_Letter}代替范围怎么样? -
是的,我已经阅读了有关
\p{Cyrillic}的信息 - 但只想提取完全小写的单词(即不是我的示例文本中的第一个单词,也不是第五个单词)。我不知道如何在这里做?
标签: perl unicode utf-8 text-extraction utf