【问题标题】:How do I match latin unicode characters in ColdFusion or Java regex?如何在 ColdFusion 或 Java 正则表达式中匹配拉丁 unicode 字符?
【发布时间】:2011-09-26 18:56:04
【问题描述】:

我正在寻找一个 ColdFusion 或 Java 正则表达式(用于替换函数),它只匹配数字 [0-9]、字母 [az],但不包含 ASCII 葡萄牙语 字母(unicode latin,如çã)。

有些是这样的:

str = reReplaceNoCase(str, "match none number/letter but keep unicode latin chars", "", "ALL");

Input string: "informação 123 ?:#$%"
Desired outcome: "informação 123"

我知道我可以将字母和数字与[a-z][0-9] 匹配,但这不匹配诸如çã 之类的字母。

【问题讨论】:

  • 您是要替换所有不是 a-z 的字符,还是只替换这两个字符?如果你想替换所有的东西,我认为你最好把你想要保留的东西从你的字符串中拉出来并建立一个新的。
  • @Limey,我编辑了我的问题以显示预期的结果。我希望只保留 [a-z][0-9] 和葡萄牙语字符,我知道它们是拉丁 Unicode。

标签: java regex coldfusion


【解决方案1】:

试试字母数字字符类:\w,它应该匹配字母、数字和下划线。

您也可以使用特殊的命名类\p{L}(我不知道,Java RegEx 解析器是否支持它)。 因此,在 C# 中,您的任务可以使用以下代码完成:

var input = "informação 123 ?:#$%";
var result = Regex.Replace(input, @"[^\p{L}\s0-9]", string.Empty);

Regex [^\p{L}\s0-9] 表示:该类中的任何字符(所有字母、空格、数字)。因此它与您的示例 ?:#$% 匹配,我们可以用空字符串替换这些字符。

【讨论】:

  • @polishchuck,这将删除我想保留的 çã
  • @Mohamad, \w 将匹配 çã
  • @polishchuck,你是对的,对不起,我用的在线测试器是PHP,我想!
  • @polishchuck,我将如何保留空格?我现在正在这样做,reReplace(input, "[^\w]", "", "ALL"); 但这会删除空格,我需要那些:/
  • @Mohamad,在[] 中添加空格,例如:[^\w ] 或使用特殊类[^\w\s]
猜你喜欢
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2014-03-04
  • 2021-10-16
  • 2010-10-06
  • 1970-01-01
  • 2015-02-26
  • 2018-06-21
相关资源
最近更新 更多