繁体   English   中英

这个正则表达式语法在 Java 中实际上意味着什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM