2

这个很简单,但似乎难倒我。

我有以下文本行:

for        months to   

我正在尝试将其与以下正则表达式匹配:

for\s*months\s*to

我将这个正则表达式读为:

  1. 必须有“为”字
  2. 后跟任意大小的空间
  3. 后跟“月”字
  4. 后跟任意大小的空间
  5. 后面跟着一个“to”字

对我来说,这应该匹配,但它不匹配。谁能看到我可能出错的地方。

4

2 回答 2

3

这是因为尾随空格。

试试这个:

    Pattern p = Pattern.compile("for\\s*months\\s*to\\s*");
    Matcher m = p.matcher("for        months to   ");
    System.out.println(m.matches());
于 2013-01-16T19:37:03.867 回答
1

您很可能有前面或后面的空格。使用String.matches(String regex)你必须匹配整个字符串。

尝试"\\s*for\\s+months\\s+to\\s*"

于 2013-01-16T19:33:38.210 回答