没有遍历整个Unicode字符范围,我如何获得具有给定属性的字符列表?特别是我想要一个所有字符都是数字的列表(即匹配/\d/
)。我已经看过Unicode::UCD
,它对于确定给定字符的属性很有用,但似乎没有办法获得具有属性的列表字符。如何获得具有给定属性的所有Unicode字符的列表?
回答
的Unicode字符每个类的列表是从Unicode的规格时编译的Perl生成,并且典型地存储在/ usr/LIB/Perl的YOURPERLVERSION /单核/ LIB/gc_sc/
例如,匹配IsDigit(又名\ d)的Unicode字符范围列表存储在文件/usr/lib/perl-YOURPERLVERSION/unicore/lib/gc_sc/Digit.pl中
哪些字符/ \ d /匹配完全取决于您的正则表达式实现(虽然标准0-9保证)。在perl的情况下,perl locale用于定义哪些字符被认为是字母和数字。
Perl的字符串转换为UTF8通过正则表达式引擎运行之前。 perl语言环境唯一影响的是如何将原始字节字符串转换为utf8。一旦字符串处于utf8中,perl将始终使用IsDigit的相同定义,而与locale无关。 – tetromino 2009-07-25 16:56:13
没有办法做到这一点,没有迭代通过所有的角色。 (如果你用它们创建一个巨大的字符串并使用正则表达式,你仍然必须至少执行一次循环来创建字符串)。
令人高兴的是,部分Perl构建过程在libc目录下的`unicore`下创建了一组文件,这些文件夹已经为您完成了很多工作。我不知道他们是否是官方的,我对Perl 5 Porters列表有疑问,以确定它们是否安全。 – 2009-07-25 20:45:29
甚至比unicore/lib/gc_sc/Digit.pl
更好的是unicore/To/Digit.pl
。它是Unicode数字字符(以及它们的偏移量)与它们的数字值的直接映射。这意味着不是:
use Unicode::Digits qw/digit_to_int/;
my @digits;
for (split "\n", require "unicore/lib/gc_sc/Digit.pl") {
my ($s, $e) = map hex, split;
for (my $ord = $s; $ord <= $e; $ord++) {
my $chr = chr $ord;
push @{$digits[digits_to_int $chr]}, $chr;
}
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
我可以说:
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
my $chr = chr hex $ord;
push @{$digits[$val]}, $chr;
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
甚至更好:
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
$digits[$val] .= "\\x{$ord}";
}
@digits = map { qr/[$_]/ } @digits;
- 1. 如何获得给定属性的所有元素?
- 2. 如何获得ABRecordRef的所有属性的列表?
- 3. 使用qmgr列出具有给定属性的所有节点
- 4. Magento获取分配给属性集的所有属性列表
- 5. 如何序列化具有属性的字符串值列表
- 6. Symfony:如何获得具有给定模板的所有模型?
- 7. 如何获得给定包中的所有类的列表
- 8. 如何获得所有计算属性的列表?
- 9. 如何获得所有扩展属性的列表
- 10. 如何获取具有某些属性的所有属性?
- 11. 如何获得具有给定标签ID的线程列表?
- 12. 如何获取所有没有给定属性的实体?
- 13. 高效地列出给定Unicode类别中的所有字符
- 14. 如何获得Babel知道的所有字符串的列表?
- 15. 如何获得具有get /属性设定JSON.stringify()来序列
- 16. 如何获得具有所选属性的选项值
- 17. 选择为获得所有标签具有特定属性和
- 18. 如何获得给定字符串名称的类和属性
- 19. 如何获得具有特定属性ID的产品列表在mysql中
- 20. 如何获得列表中所有不同值的字符串[]?
- 21. 获取所有XML属性的列表
- 22. 如何获得在给定日期有效的所有CouchDB文档的列表?
- 23. 如何获得给定CSS属性的所有允许值的数组?
- 24. 如何获得所有行中具有'NULL'的所有日期列表
- 25. 如何获得具有相同“Title”属性的字段值Jquery?
- 26. 如何获取具有标识列的所有表的列表
- 27. 如何从'pyspark.sql.types.Row'获得所有列/属性的名称?
- 28. 如何获得具有特定数据属性的html节点?
- 29. 查找具有给定特征的所有属性
- 30. 如何获得Unicode字符的字形unicode表示
谢谢,这几乎就是我正在寻找的东西。我仍然会对他们进行循环以建立一个列表,但至少这不会持续一整天。 – 2009-07-25 16:57:12