我想从字符串中删除任何非字母数字字符,但某些字符除外。
StringUtils.replacePattern(input, "\\p{Alnum}", "");
如何排除某些字符,例如.-;
?
答案 0 :(得分:4)
使用not运算符^
:
[^a-zA-Z0-9.\-;]+
这意味着"匹配不是这些字符"。所以:
StringUtils.replacePattern(input, "[^a-zA-Z0-9.\\-;]+", "");
不要忘记正确转义需要转义的字符:你需要使用两个反斜杠\\
,因为你的正则表达式是一个Java字符串。
答案 1 :(得分:1)
你可以否定你的表达;
\p{Alnum}
将其置于否定字符类中:
[^\p{Alnum}]
这将匹配任何非字母数字字符,然后您可以用""
替换它们。如果你想允许其他字符,你可以将它们附加到字符类,例如:
[^\p{Alnum}\s]
与空格字符(\s
)不匹配。
如果你要替换
[^\p{Alnum}.;-]
""
,这些字符也将被允许:.
,;
或-
。
答案 2 :(得分:0)
你的意思是StringUtils.replacePattern(input, "[^a-z\.\-]+", "");
- 尽管我并不完全确定StringUtils是否使用特殊的RegEx语法。
答案 3 :(得分:0)
StringUtils使用Java的标准Pattern
类。如果您不想导入Apache的库并希望它更快地运行(因为它不必在每次使用时编译正则表达式),您可以这样做:
{{1}}