【问题标题】:In regular expression, how can we match the character "." itself? [duplicate]在正则表达式中,我们如何匹配字符“。”本身? [复制]
【发布时间】:2012-06-12 07:54:52
【问题描述】:

可能重复:
regular expression for DOT

假设我有一个字符串:

String domain =  "www.example.com";

为了提取单词“example”,我在java中使用了split函数

String[] keys = domain.split(".");
String result = keys[1];

显然这是错误的,因为“。”是一个错误的正则表达式,因为它匹配任何字符。

什么是专门匹配字符“.”的转义序列?

虽然这个问题似乎微不足道,但我似乎找不到任何快速参考或以前的答案。谢谢。

【问题讨论】:

标签: java regex


【解决方案1】:

通过如下方式转义

\\.

【讨论】:

  • 我们应该说在正则表达式中,. 被转义为\.;但是在 Java 中 \ 是一个特殊字符(具有讽刺意味的是转义),它也需要转义 - 因此 \\.
【解决方案2】:

使用\\.。你需要逃避它。

【讨论】:

  • @JigarJoshi:我只是在编辑它。
  • 只看到一个\所以写了,已经更新了
【解决方案3】:

您可以使用 Pattern.quote() 获取任何文字字符串的正则表达式。

Pattern.quote(".") 计算结果为 "\\."

在这种情况下,使用 \\ 可能会更清楚。

【讨论】:

    【解决方案4】:

    您可以通过在 \\ 前面加上前缀来转义 .。因此,使用\\. 原因是文字字符串\\ 是单个反斜杠。在正则表达式中,反斜杠也是转义字符。正则表达式\\ 匹配单个反斜杠。

    【讨论】:

      【解决方案5】:

      您可以使用\\. 或使用方括号[.] 转义. 字符。

      因此您的代码变为:

      String[] keys = domain.split("\\."); // or domain.split("[.]");
      String result = keys[1];
      

      【讨论】:

        【解决方案6】:

        或者您可以创建一个包含dot 的类,而无需转义:

        [.]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-03
          • 2015-03-24
          相关资源
          最近更新 更多