【问题标题】:What does this regex syntax actually mean in Java?这个正则表达式语法在 Java 中的实际含义是什么?
【发布时间】:2015-10-11 03:48:18
【问题描述】:

我写了一个程序来检测回文。它适用于我所拥有的,但我偶然发现了另一种语法,我想知道它的确切含义是什么?

这是我正在使用的代码行:

    userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", "");

我了解 replaceAll 代码 sn-p 的意思是“匹配 a-z 和 A-Z (a-zA-Z) 范围内不 (^) 的字符 ([...])。”

但是,这也很有效:

    replaceAll("[^(\p{L}')]", "");

我只是不明白如何将其翻译成英文。我对正则表达式完全陌生,我发现它们非常迷人。感谢任何能告诉我这意味着什么的人。

【问题讨论】:

标签: java regex palindrome


【解决方案1】:

你应该检查这个网站: https://regex101.com

当我编写/测试/调试一些正则表达式时,它帮助了我很多;)

给出如下解释:

[^(\p{L}')] 匹配以下列表中不存在的单个字符:

  • ( 文字字符 (
  • \p{L} 匹配来自任何语言的任何类型的字母
  • ') 列表中的单个字符 ') 字面意思

【讨论】:

    【解决方案2】:

    这两个正则表达式不一样:

    • [^a-zA-Z] 匹配任何非英文字母的字符
    • [^(\p{L}')] 匹配任何字符,而不是字母、引号或括号

    即第二个也删除了括号和引号。

    正则表达式\p{L} 是“任意字母”的posix 字符类。 IE 这两个正则表达式在仅来自英语的字母的上下文中是等效的:

    • [a-zA-Z]
    • \p{L}

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2011-04-20
    相关资源
    最近更新 更多