我写了一个程序来检测回文。它适用于我所拥有的,但我偶然发现了另一种语法,我想知道它究竟意味着什么?
这是我正在使用的代码行:
userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", "");
据我所知,replaceAll代码段意味着“匹配a-z和A-Z(a-zA-Z)范围内不是(^)的字符([...]。”
然而,这也有效:
replaceAll("[^(\p{L}')]", "");
我只是不明白如何将其翻译成英文。我对正则表达式完全陌生,我发现它们非常吸引人。感谢任何能告诉我这意味着什么的人。
答案 0 :(得分:2)
你应该查看这个网站: https://regex101.com
当我编写/测试/调试一些正则表达式时,它对我帮助很大;)
它给出了以下解释:
[^(\p{L}')]
匹配下面列表中不存在的单个字符:
(
文字(
\p{L}
匹配来自任何语言的任何类型的信件')
列表')
中的单个字符答案 1 :(得分:-1)
两个正则表达式不一样:
[^a-zA-Z]
匹配任何字母而非英文字母[^(\p{L}')]
匹配任何字母,引号或括号即第二个也删除了括号和引号。
正则表达式\p{L}
是"任何字母"的posix字符类。 IE这两个正则表达式只相当于英文字母的上下文:
[a-zA-Z]
\p{L}