jyr*_*and 6 java regex parsing
让我们说一句话:"Aiavärav".表达式\w+应该捕获这个词,但是字母"ä"将这个词减半.而不是"Aiavärav",我得到了"Aia".包含那些非ascii字母的单词的正确正则表达式是什么?
rua*_*akh 13
根据文档,除非您指定标志,否则\w仅匹配:[a-zA-Z_0-9]UNICODE_CHARACTER_CLASS
Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS)
Run Code Online (Sandbox Code Playgroud)
或嵌入(?U)模式:
Pattern.compile("(?U)\\w+")
Run Code Online (Sandbox Code Playgroud)
其中任何一个都需要JDK 1.7(即Java 7).
如果您没有Java 7,则可以\w使用\p{L}("letter";类似[a-zA-Z]但不特定于ASCII)和\p{N}("number";类似[0-9]但不是特定于ASCII)来推广到Unicode :
Pattern.compile("[\\p{L}_\\p{N}]+")
Run Code Online (Sandbox Code Playgroud)
但听起来好像你正在寻找实际意义上的实际单词(与编程语言意义相反),并且不需要支持数字和下划线?在这种情况下,您可以使用\p{L}:
Pattern.compile("\\p{L}+")
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,大括号实际上是可选的 - 你可以\pL代替p{L}而\pN不是代替\p{N}- 但人们通常会包括它们,因为它们需要多字母类别,如\p{Lu}"大写字母".)
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |