沒有遍歷整個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. 使用qmgr列出具有給定屬性的所有節點
- 3. 如何獲得所有擴展屬性的列表
- 4. 如何獲得具有給定標籤ID的線程列表?
- 5. 如何獲得具有get /屬性設定JSON.stringify()來序列
- 6. 如何獲得具有所選屬性的選項值
- 7. 如何獲得列表中所有不同值的字符串[]?
- 8. 獲取所有XML屬性的列表
- 9. 如何獲得在給定日期有效的所有CouchDB文檔的列表?
- 10. 如何獲得給定CSS屬性的所有允許值的數組?
- 11. 如何獲得具有相同「Title」屬性的字段值Jquery?
- 12. 如何獲得具有特定數據屬性的html節點?
- 13. 如何獲得Unicode字符的字形unicode表示
- 14. 檢索屬性包含給定字符串的所有節點
- 15. 獲取具有特定屬性的nsattributed字符串的子串
- 16. 如何從HTML中獲得具有相同類屬性的所有元素?
- 17. 如何獲得一個類的所有屬性作爲Python中的列表
- 18. 如何快速設置所有表的所有列屬性「UpdateCheck」?
- 19. 訪問:獲取數據庫中具有「unicode壓縮」的所有列的列表
- 20. 獲得具有特定屬性的所有元素在LINQ to XML
- 21. 獲取給定XML元素的所有有效屬性
- 22. 獲取具有特定屬性的所有數據SPARQL
- 23. 獲取具有自定義屬性的所有Sitecore用戶
- 24. 如何枚舉具有自定義類屬性的所有類?
- 25. 如何檢查具有自定義屬性的所有輸入
- 26. 具有特定字符的html列表?
- 27. python詞典:如何獲得具有特定值的所有鍵
- 28. 如何獲得在字符串列表中具有最大值的表達式?
- 29. 如何獲得特定字符後的所有文本?
- 30. 如何獲得具有特定值的散列表鍵?
謝謝,這幾乎就是我正在尋找的東西。我仍然會對他們進行循環以建立一個列表,但至少這不會持續一整天。 – 2009-07-25 16:57:12