我有兩個正則表達式:^(\\p{L}|[0-9]|_)+$
和#[^[:punct:][:space:]]+
(第一個用於Java,第二個用於iOS)。我想將這些組合成一個表達式,以匹配iOS中的一個或另一個表達式。 第一個是用戶名,因此我還需要在該開頭添加一個@
字符。那將是什麼樣子?合併這些正則表達式
回答
Java中的^(\\p{L}|[0-9]|_)+$
模式與iOS中使用的ICU庫中的模式相同(它們非常相似):由1個或多個Unicode字母,ASCII數字或_
組成的整個字符串。由於交替組是量化的,寫得很差,並且比基於字符類的解決方案效率低得多,^[\\p{L}0-9_]+$
。
#[^[:punct:][:space:]]+
模式與#
匹配,後跟除標點/符號和空格字符(即1個或多個字母或數字或字母數字字符)之外的1個或多個字符。
你追求什麼可以writtern爲
@[\\p{L}0-9_]+|[^[:punct:][:space:]]+
或
@[\\p{L}0-9_]+|#[[:alnum:]]+
,或者如果你想限制爲ASCII數字,不符合Unicode的數字:
@[\\p{L}0-9_]+|#[\\p{L}0-9]+
它匹配
@
- 一個@
符號
[\\p{L}0-9_]+
- 1以上Unicode字母,ASCII diigts,_
|
- 或#
- 一個#
炭[[:alnum:]]+
- 1或多個字母或數字。[^[:punct:][:space:]]+
- 除標點/符號和空格之外的任何1+字符。
基本上,所有這些表達式match strings like this。
如果你想匹配全#SomeThing_123
,只是用[@#]\\w+
,一個@
或#
,然後1個或多個字母,數字或_
,或只允許ASCII數字,[@#][\\p{L}0-9_]+
。
模式末尾可能需要字邊界,[@#][\\p{L}0-9_]+\\b
。
這是非常深入的,謝謝!爲我工作的是'@ [\ p {L} 0-9 _] + |#[^ [:punct:] [:space:]] +',因爲我需要使用像ı和ö這樣的特殊字符,但在#標籤中沒有'_'。 – Tometoyou
@Tometoyou如果您發現我的答案有幫助,請考慮將其加入。 –
- 1. 合併正則表達式
- 2. 我怎麼能結合這些正則表達式規則?
- 3. 是什麼,這些正則表達式
- 4. 什麼是正則表達式這些
- 5. 合併2正則表達式模式
- 6. 結合這兩個正則表達式
- 7. 如何將這些正則表達式相結合的JavaScript
- 8. 如何結合這些正則表達式的要求?
- 9. 合併三個正則表達式組
- 10. 使用preg_match合併正則表達式
- 11. 如何合併正則表達式
- 12. 合併兩個正則表達式
- 13. 正則表達式文本合併
- 14. 合併數字的正則表達式
- 15. 合併兩個正則表達式
- 16. 合併2個正則表達式
- 17. 合併兩個正則表達式
- 18. 正則表達式合併需要
- 19. Perl的正則表達式:我如何結合這2個正則表達式?
- 20. 電子郵件正則表達式。這個正則表達式是否合適?
- 21. 合併線與正則表達式,與例外的某些行
- 22. [正則表達式]爲一些正則表達式大於10000
- 23. 將幾個正則表達式合併爲一個正則表達式
- 24. 合併多個正則表達式組在一個正則表達式
- 25. 將這兩個正則表達式合併爲一個
- 26. 如何將這兩個正則表達式合併爲一個?
- 27. 有沒有合併這兩個正則表達式的方法?
- 28. 正則表達式匹配的表達只有這些情況
- 29. 正則表達式組合
- 30. 結合正則表達式
你的意思是在他們之間扔一個管道? (^(\\ p {L} | [0-9] | _)+ $)|(#[^ [:punct:] [:space:]] +) – sniperd
我確實認爲要這樣做,但我不知道該美元符號是否適用於iOS,我在iOS中不擅長正則表達式。還有'@'符號會去哪裏?在'^'之前? – Tometoyou
^表示該行的開頭,所以@會進入該行的右側。在iOS中$應該沒問題。給它一個鏡頭,如果它的作品我會寫一個完整的答案:) – sniperd