如何匹配ColdFusion或Java正则表达式中的拉丁unicode字符?

如何匹配ColdFusion或Java正则表达式中的拉丁unicode字符?,java,regex,coldfusion,Java,Regex,Coldfusion,我正在寻找一个ColdFusion或Java正则表达式(在替换函数中使用),它只匹配数字[0-9],字母[a-z],但不包括ASCII葡萄牙语字母(unicode拉丁语,如ç和ã) 有些人喜欢这样: str = reReplaceNoCase(str, "match none number/letter but keep unicode latin chars", "", "ALL"); 输入字符串:“informação 123?:#$%” 预期结果:“informação 123” 我知道

我正在寻找一个ColdFusion或Java正则表达式(在替换函数中使用),它只匹配数字[0-9],字母[a-z],但不包括ASCII葡萄牙语字母(unicode拉丁语,如
ç
ã

有些人喜欢这样:

str = reReplaceNoCase(str, "match none number/letter but keep unicode latin chars", "", "ALL");
输入字符串:“informação 123?:#$%”

预期结果:“informação 123”


我知道我可以用
[a-z][0-9]
匹配字母和数字,但这与
ç
ã
等字母不匹配。请尝试字母数字字符类:
\w
,它应该匹配字母、数字和下划线

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

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

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

您是要替换所有不是a-z的字符,还是只替换这两个字符?如果你想把所有的东西都换掉,我想你最好把你想保留的东西从你的绳子里拿出来,然后再做一个新的。@Limey,我编辑了我的问题以显示你想要的结果。我希望只保留[a-z][0-9]和葡萄牙语字符,我理解它们是拉丁Unicode。@polishchuck,这将删除我想保留的
ç
ã
。@Mohamad,
\w
将匹配
ç
polishchuck,你说得对,对不起,我使用的在线测试工具是PHP,我想@波利斯查克,我该如何保持空间?我现在正在这样做,
重新替换(输入,“[^\w]”,“,”所有“)
但这会删除空格,我需要这些:/@Mohamad,在
[]
中添加空格,例如:
[^\w]
或使用特殊类
[^\w\s]