我想在ruby中構建一個正則表達式,以匹配UTF-8中的字母字符,如ñíóúü
等。我知道/\p{Alpha}/i
作品和/\p{L}/i
的作品,但有什麼區別?ruby中/ p {Alpha}/i和/ p {L}/i有什麼區別?
回答
它們似乎是等價的。 (編輯:有時,看到這個答案的結尾)
看起來像Ruby從版本1.9支持\p{Alpha}
。在POSIX \p{Alpha}
等於\p{L&}
(用於支持Unicode的正則表達式; see here)。這匹配具有大寫和小寫變體的所有字符(see here)。 UNICASE字母將不會被匹配(而他們將匹配由\p{L}
這似乎是不正確的紅寶石(我選擇了一個隨機阿拉伯字符,因爲阿拉伯有UNICASE字母):
\p{L}
(any letter) matches.- Case-sensitive classes
\p{Lu}
,\p{Ll}
,\p{Lt}
don't match.正如預期的那樣。 p{L&}
doesn't match.正如預期的那樣。\p{Alpha}
matches.
這似乎是一個非常好的跡象,\p{Alpha}
只是Ruby中\p{L}
的別名。在Rubular上,您還可以看到\p{Alpha}
在Ruby 1.8.7中不可用。
注意,i
修改是不相關的在任何情況下,因爲這兩個\p{Alpha}
和\p{L}
比賽都大寫和小寫字符反正。
編輯:
一哈,是有區別的!我剛剛發現了this PDF關於Ruby的新的正則表達式引擎(如上所述從Ruby 1.9開始使用)。 \p{Alpha}
可用,無論編碼如何(如果沒有Unicode支持,可能僅匹配[A-Za-z]
),而\p{L}
明確是Unicode屬性。這意味着,\p{Alpha}
的行爲與POSIX正則表達式中的行爲完全相同,區別在於此處對應於\p{L}
,但在POSIX中對應於\p{L&}
。
謝謝。我剛剛意識到你指出了關於'i'修飾符的內容。 –
@BishmaStornelli看起來我並不完全正確。看我的編輯;) –
再次謝謝你。很好的答案。 –
- 1. sed中p和p有什麼區別?
- 2. while(* p){p ++;},while(* ++ p){;}和while(* p ++){;}之間有什麼區別?
- 3. x = * p ++和* p ++; x = * p in c有什麼區別?
- 4. 區別<p>是什麼Javascript和ASP.net有什麼區別?</p>
- 5. C中的(* p)[8]和* p [8]有什麼區別?
- 6. C++中char * p和const char * p有什麼區別?
- 7. -p和-q選項有什麼區別
- 8. 「perl -n」和「perl -p」有什麼區別?
- 9. p和a有什麼區別?
- 10. $('。p')和$('p')jquery之間有什麼區別?
- 11. scanf(「%d」,* p)和scanf(「%d」,p)有什麼區別?
- 12. 函數中* p和(* p)[3]之間的區別是什麼?
- 13. * p [5]和(* p)[5]之間的區別是什麼?
- 14. p :: first-letter和p :: first-letter之間的區別是什麼?
- 15. (p span)和(p> span)之間的區別是什麼?
- 16. '%p'和'my%p'之間的區別?
- 17. Ruby中的「p」是什麼?
- 18. perl -d中x和p有什麼區別?
- 19. 與%i和%li有什麼區別?
- 20. Ruby win32api和win32ole有什麼區別?
- 21. Ruby和Ruby on Rails有什麼區別?
- 22. Jade中li#{variable}和li =變量有什麼區別?
- 23. 爲什麼co-P = P
- 24. Ruby中STDIN和$ stdin有什麼區別?
- 25. 2 [p]和6 [p]是什麼意思?
- 26. p parsed [「desc」] [「someKey」],在ruby中「p」是什麼意思?
- 27. 區別<p>是什麼</p> <ul> <li>ACTION_BOOT_COMPLETED</li> <li><p>ACTION_SCREEN_ON</p> <p>在機器人之間的區別?和哪個實際用於處理設備的睡眠模式?</p></li> </ul>
- 28. 區別<p>是什麼NUnit的和NUnit.Runner包之間的區別嗎?</p>
- 29. gdb中x和p的區別?
- 30. 爲什麼p大於p?
這很奇怪。根據[這個比較](http://www.regular-expressions.info/refflavors.html),前者不應該在Ruby中可用。 –
必須是過時的,因爲我在我的rails控制檯中使用了這兩者。 –
看起來它已過時。 Ruby開始在1.9中使用新的Regex引擎,IIRC,因此這些引擎可能會從那時起。 – Chowlett