【问题标题】:What is the difference between \\s+ and \s+ [duplicate]\\s+ 和 \s+ 有什么区别 [重复]
【发布时间】:2018-09-20 01:11:53
【问题描述】:

我知道其中一个正则表达式是“\s+”,它表示一个或多个空格。但在我看到的许多参考文献中,

为什么他们使用双反斜杠“\\s+”而不是一个反斜杠“\s+”?

例如,我在 stackoverflow 中得到的这段代码:

import java.math.*;
import java.util.*;
import static java.util.Arrays.*;
import static java.lang.Math.*;
public class Initials {
  public String getInitials(String s) {

    String r = "";
    for(String t:s.split("\\s+")){
      r += t.charAt(0);
    }
    return r;
  }


  void p(Object... o) {
          System.out.println(deepToString(o));
      }


}

这段代码的输出是:

示例输入:“john fitzgerald kennedy”

返回:“jfk”

【问题讨论】:

  • 您必须在双引号 Java String 文字中键入两个反斜杠,才能在字符串中包含一个反斜杠字符。反斜杠后跟其他任何东西都意味着一些特别的东西。
  • 哦,"\s+""\\s+" 之间的区别在于 "\\s+" 为您提供了一个字符串,其中包含您想要的反斜杠正则表达式,后跟一个 s,后跟一个加号,而"\s+" 导致编译错误,因为 \s 不是有效的 Java 字符串转义序列。

标签: java regex whitespace metacharacters


【解决方案1】:

在 Java 和其他一些编程语言中,反斜杠可以解释为字符串本身的一部分,而不是正则表达式的一部分。因此,字符串中的 \\s 在进入正则表达式部分时仅表示 \s 。这意味着 \\ 只是将反斜杠本身转义,使其成为文字反斜杠。

【讨论】:

  • 啊,我明白了..谢谢你顺便说一句
猜你喜欢
  • 2015-01-17
  • 2016-06-20
  • 1970-01-01
  • 2010-12-14
  • 2021-02-26
相关资源
最近更新 更多