【问题标题】:How to make a java regular expression which matches a word in any language如何制作与任何语言中的单词匹配的java正则表达式
【发布时间】:2010-12-15 10:00:53
【问题描述】:

要匹配英文单词,我会使用模式[a-zA-Z]+

有什么方法可以编写一个匹配任何语言的单词的正则表达式?即使单词包含ščžé... 之类的字符也是如此。我不知道世界上可能存在哪些角色,所以我认为纯粹的[a-zA-Zščžé]+ 不够...

有没有更好的方法来写这个表达式?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    根据Pattern javadoc\p{L}+ 应该匹配一系列 Unicode 字母(即在 Unicode 中具有类别 L 的字符)。这可能是最广泛的定义,尽管您可能想查看unicode categories list 来决定是否要添加其他类别(例如,有一个称为“数字字母”)。

    【讨论】:

      【解决方案2】:

      通常你会使用一些 unicode 字符范围

      [a-zA-Z\u0000-\u1111]
      

      [a-zA-Zš-é]
      

      因此,您必须查看 unicode 字符代码并添加目标语言中的任何特殊字符范围

      【讨论】:

      • 这不是很精确,根据 Palo 对“我不知道世界上可能存在哪些角色”的担忧。他仍然会缺少一些字符
      • @Lukas:好点,只有当你有目标语言时才有效。加上迈克尔的回答要好得多;-)
      • 是的,我也不知道\p{L}+。学到东西了! :)
      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 2014-07-05
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多