我正在寻找仅匹配数字[0-9],字母[az],但不包含ASCII ASCIIt_strong葡萄牙语字母(Unicode拉丁语,例如çã)的ColdFusion或Java正则表达式(用于替换功能) )。

像这样:

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]匹配字母和数字,但这与çã等字母不匹配。

最佳答案

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

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

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

正则表达式[^\p{L}\s0-9]的意思是:此类中的任何字符而不是(所有字母,空格,数字)。因此,它与您的示例?:#$%相匹配,我们可以将这些字符替换为空字符串。

09-10 08:47
查看更多