我正在寻找一个Java中的正则表达式,它匹配String中的所有空白字符."\ s"只匹配一些,它不匹配 和类似的非ascii空格.我正在寻找一个正则表达式,它匹配Java String中可能出现的所有(常见)空格字符.
[编辑]
澄清:我不是指字符串序列"  "我指的是通常用"  " 表示的sincle unicode字符U + 00A0 ,例如用HTML表示,以及所有其他带有类似空白字符的unicode字符,例如"NARROW NO -BREAK SPACE"(U + 202F),以Unicode 3.2及以上编码的Word连接器为U + 2060,"ZERO WIDTH NO-BREAK SPACE"(U + FEFF)以及任何其他可以被称为空白区域的角色.
[回答]
对于我的目的,即捕获所有空白字符,unicode + traditional,以下表达式完成工作:
[\p{Z}\s]
答案在下面的评论中,但由于它有点隐藏,我在这里重复一遍.
Vin*_*vic 37
  就正则表达而言,它不是空白字符.您需要修改regexp以包含除\ s之外的那些字符串,例如/(\ s | |%20)/,或者先解析字符串内容以获取数据的ASCII或Unicode表示.
你在这里混合抽象级别.
如果,经过仔细重读问题之后的情况似乎就是这种情况,那么您将找到一种方法来匹配所有指向标准ASCII加上空白代码点的空白字符,\p{Z}或者\p{Zs}将完成工作.
你应该真正澄清你的问题,因为它误导了很多人(甚至做出一些妥协的正确答案).
Bal*_*usC 11
你按照我的预期澄清了这个问题:你实际上并不是在寻找字符串文字, 因为这里的许多人似乎都在想,解决方案太明显了.
嗯,不幸的是,没有办法使用正则表达式匹配它们.最好是在模式中包含特定的代码点,例如:"[\\s\\xA0]".
在其中一条评论中编辑,您可以使用未记录 "\\p{Z}"的内容.艾伦,你能不能发表评论你是怎么发现的?这个非常有用.
如果有人再次遇到这个问题寻求帮助,我建议寻求以下答案:/sf/answers/437885871/
简短版本:\\p{javaSpaceChar}
原因:根据Pattern 类,这映射了Character.isSpaceChar方法:
行为类似于 java.lang.Character boolean is methodname方法的类别(已弃用的方法除外)可通过相同的 \p{ prop } 语法使用,其中指定属性的名称为 java methodname。
| 归档时间: | 
 | 
| 查看次数: | 27134 次 | 
| 最近记录: |