代码之家  ›  专栏  ›  技术社区  ›  Carsten

匹配正则表达式的Java正则表达式

  •  30
  • Carsten  · 技术社区  · 16 年前

    我在爪哇寻找一个正则表达式,它与字符串中的所有空白字符匹配。\“S”只匹配一些,不匹配   以及类似的非ASCII空白。我在寻找一个正则表达式,它与Java字符串中所有的(常见的)空格字符匹配。

    [编辑]

    澄清:我不是指字符串序列”   “我的意思是sincle unicode字符u+00a0,通常由表示”   “,例如,在HTML中,以及具有类似空白度量的所有其他Unicode字符,例如,“窄的不间断空格”(U+202F)、用Unicode 3.2及更高版本编码为U+2060的字连接符、“零宽度不间断空格”(U+FEFF)以及任何其他可以重新定义为空白的字符。”

    [答案]

    对于我的小狗,即捕捉所有空格字符,unicode+传统,以下表达式完成了工作:

    [\p{Z}\s]

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

    7 回复  |  直到 8 年前
        1
  •  11
  •   Andomar    16 年前

    这个   在HTML中只有空白。使用一个 HTML parser 提取纯文本。和 \s 应该工作得很好。

        2
  •  36
  •   Vinko Vrsalovic    16 年前

    &就regexpes而言,不是空白字符。您需要修改regexp以包括这些字符串,例如/(\s %20)/,或者以前解析字符串内容以获取数据的ASCII或Unicode表示。

    这里混合了抽象级别。

    如果,在仔细重新阅读问题之后,情况似乎是这样的,那么您正在寻找一种方法来匹配所有涉及标准ASCII的空白字符加上空白代码点, \p{Z} \p{Zs} 会做这项工作的。

    你真的应该澄清你的问题,因为它误导了很多人(甚至做出了正确的答案来进行一些否决)。

        3
  •  11
  •   BalusC    16 年前

    正如我所期望的那样,您澄清了这个问题:实际上您并不是在寻找字符串文字   这里的许多人似乎都在思考,对于他们来说,解决方案太明显了。

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

    编辑 正如其中一条评论所显示的那样,您可以使用 undocumented "\\p{Z}" 为此。艾伦,你能不能留下你是怎么发现的?这个很有用。

        4
  •  3
  •   mickmackusa Tom Green    8 年前

    以下是我对“空白”几个相互竞争的定义的总结:

    http://spreadsheets.google.com/pub?key=pd8dAQyHbdewRsnE5x5GzKQ

    你可能最终不得不明确列出你所关心的那些与前面的那些不匹配的额外的。

        5
  •  2
  •   Alan Moore Chris Ballance    16 年前

      不是空白。它是一个字符编码序列,在HTML中表示空白。在运行字符串匹配之前,您很可能希望将HTML编码的文本转换为纯文本。如果是这样的话,去查一下 javax.swing.text.html文件

        6
  •  2
  •   nikodaemus    9 年前

    如果有人再次遇到这个问题寻求帮助,我建议寻求以下答案: https://stackoverflow.com/a/6255512/1678392

    简短版本: \\p{javaSpaceChar}

    为什么:每个 Pattern class 这张地图是 Character.isSpaceChar 方法:

    行为类似java.lang.character boolean的类别是 方法名称 方法(不推荐使用的方法除外)可通过同一个\p{ 支柱 {指定属性的名称为Java的语法 方法名称 .

        7
  •  0
  •   Community Mohan Dere    9 年前

    regex字符是唯一独立于编码的字符。以下是一些字符的列表,这些字符(以Unicode表示)是不打印的:

    How many non-printing characters are in common use?