我想写一个正则表达式包括:字母,数字和空格,但我想排除!'^+%&/()=?_-*£#$
等特殊字符。
我认为我可以将[a-zA-Z]
用于信件,[0-9]
用于数字,\S
用于空格字符。
[A-ZA-Z0-9 \ S]
但我想要清除的字符串可能包含é,ü,ğ,i,ç
之类的字母,依此类推。
我不希望删除这些字母。
是否可以编写这样的正则表达式?
答案 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
选项运行这两个正则表达式。
有两种方法
请注意,此Unicode character class flag
在外面
下面的正则表达式中的0 - FF范围,因此无法匹配。
U+011F ğ LATIN SMALL LETTER G WITH BREVE
解释
(?:\p{Alnum}(?<=[\x{00}-\x{FF}])|\s)+
(?:
\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)+