[英]What does this regex syntax actually mean in Java?
我写了一个程序来检测回文。 它适用于我所拥有的,但我偶然发现了另一种语法,我想知道它到底是什么意思?
这是我正在使用的代码行:
userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", "");
我知道 replaceAll 代码片段的意思是“匹配 az 和 AZ (a-zA-Z) 范围内不 (^) 的字符 ([...])”。
但是,这也有效:
replaceAll("[^(\p{L}')]", "");
我只是不明白如何将其翻译成英文。 我对正则表达式完全陌生,我觉得它们很吸引人。 感谢任何能告诉我这意味着什么的人。
你应该检查这个网站: https : //regex101.com
当我编写/测试/调试一些正则表达式时,它对我帮助很大;)
它给出了以下解释:
[^(\\p{L}')]
匹配以下列表中不存在的单个字符:
(
文字字符(
\\p{L}
匹配来自任何语言的任何类型的字母')
列表中的单个字符')
字面意思这两个正则表达式不一样:
[^a-zA-Z]
匹配任何不是英文字母的字符[^(\\p{L}')]
匹配任何字符而不是字母、引号或括号即第二个也删除了括号和引号。
正则表达式\\p{L}
是“任何字母”的 posix 字符类。 IE 这两个正则表达式仅在英文字母的上下文中是等效的:
[a-zA-Z]
\\p{L}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.