【问题标题】:java regex support for non-ascii values?java正则表达式支持非ascii值吗?
【发布时间】:2009-05-27 20:08:22
【问题描述】:

我们有一个当前的方法可以清除不是字母或空格的字符,这很简单

String clean(String input)
{
   return input==null?"":input.replaceAll("[^a-zA-Z ]","");
}

确实应该修复它以支持非英语字符(例如 ś,ũ, ... )。不幸的是,java regex 类(例如 "\W" - 非单词字符, "\p{Alpha}" -US-ASCII 仅}。 ) 似乎不支持这一点。有没有办法用 java 正则表达式来做这个,而不是手动循环每个字符来测试它?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    Java 6 模式处理 Unicode,请参阅 this doc

    Unicode 转义序列,例如 \u2014 在 Java 源代码中是 按照 §3.3 中的描述进行处理 Java 语言规范。这样的 还实现了转义序列 直接通过正则表达式 解析器,以便 Unicode 转义可以 用于从 文件或从键盘。就这样 字符串“\u2014”和“\\u2014”,而 不相等,编译成一样的 模式,匹配字符 十六进制值为 0x2014。

    Unicode 块和类别是 用 \p 和 \P 结构编写 就像在 Perl 中一样。 \p{prop} 匹配,如果 输入具有属性道具,而 \P{prop} 如果输入不匹配 有那个属性。块是 用前缀 In 指定,如 在蒙古语。类别可能是 用可选前缀指定是: \p{L} 和 \p{IsL} 都表示 Unicode 字母的类别。块 和类别都可以在里面使用 并且在字符类之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多