2013-01-16 140 views
2

这一个很简单,但似乎在困扰着我。用java中的空格匹配单词正则表达式

我有以下文本行:

for  months to 

我想用下面的正则表达式匹配它:

for\s*months\s*to 

我读这正则表达式为:

  1. 必须有单词“for”
  2. 后面跟着任意数量的空间
  3. 其次是“月”字
  4. 后面紧跟着这个词的空间
  5. 任何量“到”

而对于我来说,这应该匹配,但它不。任何人都可以看到我可能出错的地方。

+0

你可能有多余的空格(和复制你的代码有多余的空格“到”后)。这是一个应该帮助你的链接。 http://fiddle.re/26pu – Scott

回答

1

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

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

+0

我将它改为:'\ s * for \ s * months \ s * to'以允许任何空格开头,但它仍然不匹配 – user489041

+0

这是因为您有在上面的例子中,最后一个空白符号。 – crush

3

这是因为后面的空格中。

试试这个:

Pattern p = Pattern.compile("for\\s*months\\s*to\\s*"); 
    Matcher m = p.matcher("for  months to "); 
    System.out.println(m.matches()); 
+0

您的回答后我从OP问题中选择了“以下文本行”,并且选择显示了尾部的空格。接得好! :) – andr

相关问题