Java 正则表达式,用于匹配 _all_ 空格字符

2022-09-01 06:35:53

我正在寻找Java中的正则表达式,该表达式匹配字符串中的所有空格字符。“\s”仅匹配某些,不匹配和类似的非 ascii 空格。我正在寻找一个正则表达式,该表达式匹配Java字符串中可能出现的所有(常见)空格字符。 

[编辑]

澄清:我不是指字符串序列“”,我指的是通常由“”表示的sincle unicode字符U + 00A0,例如在HTML中,以及所有其他具有类似空格meainig的Unicode字符,例如“NARROW NO-BREAK SPACE”(U + 202F),在Unicode 3.2及更高版本中编码为U + 2060的单词连接器,“零宽度不中断空格”(U + FEFF)以及任何其他可以重新加成空格的字符。  

[答案]

对于我的pupose,即捕获所有空格字符,unicode +繁体,以下表达式可以完成工作:

[\p{Z}\s]

答案在下面的评论中,但由于它有点隐藏,我在这里重复一遍。


答案 1

 不是空格字符,就正则表达式而言。您需要修改正则表达式以除 \s 之外还包括这些字符串,如 /(\s| |%20)/,或者事先分析字符串内容以获取数据的 ASCII 或 Unicode 表示形式。

您在这里混合了抽象级别。

如果,在仔细重读问题之后似乎是这种情况,那么您正在寻找一种方法来匹配引用标准ASCII的所有空格字符以及空格代码点,或者将完成工作。\p{Z}\p{Zs}

你应该真正澄清你的问题,因为它误导了很多人(甚至做出正确的答案来获得一些反对票)。


答案 2

你以我预期的方式澄清了这个问题:你实际上并不像这里的许多人似乎认为的那样寻找字符串字面,并且解决方案太明显了。 

好吧,不幸的是,没有办法使用正则表达式来匹配它们。最好是在模式中包含特定的代码点,例如:."[\\s\\xA0]"

编辑如其中一条评论所示,您可以使用未记录的。艾伦,你能留下评论你是怎么发现的吗?这个非常有用。"\\p{Z}"