我有两个正则表达式:^(\\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. 合并2正则表达式模式
- 5. 结合这两个正则表达式
- 6. 正则表达式文本合并
- 7. 正则表达式合并需要
- 8. 使用preg_match合并正则表达式
- 9. 合并三个正则表达式组
- 10. 合并数字的正则表达式
- 11. [正则表达式]为一些正则表达式大于10000
- 12. 合并多个正则表达式组在一个正则表达式
- 13. 将几个正则表达式合并为一个正则表达式
- 14. 将这两个正则表达式合并为一个
- 15. 正则表达式组合
- 16. 正则表达式 - 符合
- 17. 结合升压正则表达式两个正则表达式
- 18. 正则表达式(正则表达式)
- 19. 正则表达式(正则表达式)
- 20. 这条规则的正则表达式?
- 21. 正则表达式来捕捉这些模式的递归
- 22. 这个模式的正则表达式
- 23. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 24. OWASP正则表达式存储库:这是正确的正则表达式吗?
- 25. 在JavaScript的正则表达式检查“这并没有这个”
- 26. 这是C中的合法正则表达式模式吗?
- 27. PHP-MySQLi替换为正则表达式/正则表达式/正则表达式
- 28. 正则表达式正则表达式返回的值正则表达式
- 29. 正则表达式正则表达式模仿正则表达式
- 30. 正则表达式提取器中必须使用哪些正则表达式?
你的意思是在他们之间扔一个管道? (^(\\ p {L} | [0-9] | _)+ $)|(#[^ [:punct:] [:space:]] +) – sniperd
我确实认为要这样做,但我不知道该美元符号是否适用于iOS,我在iOS中不擅长正则表达式。还有'@'符号会去哪里?在'^'之前? – Tometoyou
^表示该行的开头,所以@会进入该行的右侧。在iOS中$应该没问题。给它一个镜头,如果它的作品我会写一个完整的答案:) – sniperd