这个正则表达式语法在 Java 中的实际含义是什么?
What does this regex syntax actually mean in Java?
我写了一个程序来检测回文。它适用于我所拥有的,但我偶然发现了另一种语法,我想知道它到底是什么意思?
这是我正在使用的代码行:
userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", "");
我知道 replaceAll 代码片段意味着 "match characters ([...]) that are not (^) in the range a-z and A-Z (a-zA-Z)."
然而,这也有效:
replaceAll("[^(\p{L}')]", "");
我只是不明白如何将其翻译成英文。我对正则表达式完全陌生,但我发现它们非常吸引人。感谢任何能告诉我这是什么意思的人。
两个正则表达式不一样:
[^a-zA-Z]
匹配非英文字母的任何字符
[^(\p{L}')]
匹配任何字符而不是字母、引号或括号
即第二个也删除了括号和引号。
正则表达式 \p{L}
是 "any letter" 的 posix 字符 class。 IE 这两个正则表达式仅在英文字母的上下文中是等效的:
[a-zA-Z]
\p{L}
你应该检查这个网站:
https://regex101.com
当我 writing/testing/debugging 一些正则表达式时,它对我帮助很大 ;)
给出如下解释:
[^(\p{L}')]
匹配下表中不存在的单个字符:
(
文字字符 (
\p{L}
匹配来自任何语言的任何类型的字母
')
列表中的单个字符 ')
字面意思
我写了一个程序来检测回文。它适用于我所拥有的,但我偶然发现了另一种语法,我想知道它到底是什么意思?
这是我正在使用的代码行:
userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", "");
我知道 replaceAll 代码片段意味着 "match characters ([...]) that are not (^) in the range a-z and A-Z (a-zA-Z)."
然而,这也有效:
replaceAll("[^(\p{L}')]", "");
我只是不明白如何将其翻译成英文。我对正则表达式完全陌生,但我发现它们非常吸引人。感谢任何能告诉我这是什么意思的人。
两个正则表达式不一样:
[^a-zA-Z]
匹配非英文字母的任何字符[^(\p{L}')]
匹配任何字符而不是字母、引号或括号
即第二个也删除了括号和引号。
正则表达式 \p{L}
是 "any letter" 的 posix 字符 class。 IE 这两个正则表达式仅在英文字母的上下文中是等效的:
[a-zA-Z]
\p{L}
你应该检查这个网站: https://regex101.com
当我 writing/testing/debugging 一些正则表达式时,它对我帮助很大 ;)
给出如下解释:
[^(\p{L}')]
匹配下表中不存在的单个字符:
(
文字字符(
\p{L}
匹配来自任何语言的任何类型的字母')
列表中的单个字符')
字面意思