正则表达式排除Java特殊字符

时间:2017-05-28 22:29:59

标签: java regex

我想写一个正则表达式包括:字母,数字和空格,但我想排除!'^+%&/()=?_-*£#$等特殊字符。

我认为我可以将[a-zA-Z]用于信件,[0-9]用于数字,\S用于空格字符。

[A-ZA-Z0-9 \ S]

但我想要清除的字符串可能包含é,ü,ğ,i,ç之类的字母,依此类推。 我不希望删除这些字母。

是否可以编写这样的正则表达式?

3 个答案:

答案 0 :(得分:2)

是的,这是可能的。

  • CC=cc ## use CC=, not C= FLAGS=-Wall ## no -c flag LIBS=-lm all : cliente server cliente: cliente.c $(CC) $(FLAGS) $(LIBS) -o cliente cliente.c # no -c, and use LIBS server: server.c $(CC) $(FLAGS) $(LIBS) -o server server.c # no -c, and use LIBS 匹配任何Unicode字母a-z和字母如é,ü,ğ,i,ç
  • \p{L}匹配一个数字(等于[0-9])
  • \d匹配空格,制表符,回车符,换行符,垂直制表符或换页符

\s应匹配列表中的一个或多个字符

在这里你可以看到一个例子:

答案 1 :(得分:0)

如果你想使用非正则表达方式,那么你可以使用Apache StringUtils.isAlphanumericSpace(String str)

来做

答案 2 :(得分:0)

你可以采取不同的方式。

注意 - 必须使用echo or print选项运行这两个正则表达式。

有两种方法

  • 使用 alnum 并保持在Ascii和Extended-Ascii范围内。

请注意,此Unicode character class flag在外面 下面的正则表达式中的0 - FF范围,因此无法匹配。

U+011F ğ LATIN SMALL LETTER G WITH BREVE

解释

(?:\p{Alnum}(?<=[\x{00}-\x{FF}])|\s)+
  • 或者,你可以使用拉丁语块的/脚本并保持在 alnum 范围内的拉丁语类路线。

(?: \p{Alnum} # Any alpha numeric Unicode (?<= [\x{00}-\x{FF}] ) # In the U+0 - U+0FF codepoint range | # or, \s # Whitespace )+

扩展

(?:[\p{Block=Latin_1_Supplement}\p{Block=Latin_Extended_A}\p{Block=Latin_Extended_Additional}\p{Block=Latin_Extended_B}\p{Block=Latin_Extended_C}\p{Block=Latin_Extended_D}\p{Block=Basic_Latin}\p{Script=Latin}](?<=\p{Alnum})|\s)+