在java中用空格regex匹配单词

在java中用空格regex匹配单词,java,regex,Java,Regex,这个很简单,但似乎让我很困惑 我有以下文本行: for months to 我正在尝试将其与以下正则表达式匹配: for\s*months\s*to 我将此正则表达式解读为: 必须有“for”这个词 后跟任意大小的空间 然后是“月” 后跟任意大小的空间 后面跟着“to” 对我来说,这应该是匹配的,但事实并非如此。任何人都能看到我可能出错的地方。您很可能有前面或后面的空格。使用String.matches(String regex)必须匹配整个字符串 请在\\s+月\\s+

这个很简单,但似乎让我很困惑

我有以下文本行:

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

for\s*months\s*to
我将此正则表达式解读为:

  • 必须有“for”这个词
  • 后跟任意大小的空间
  • 然后是“月”
  • 后跟任意大小的空间
  • 后面跟着“to”

  • 对我来说,这应该是匹配的,但事实并非如此。任何人都能看到我可能出错的地方。

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


    请在\\s+月\\s+到\\s*期间尝试
    “\\s*”

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


    请在\\s+months\\s+to\\s*中尝试
    “\\s*”

    这是因为后面有空格

    试试这个:

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

    这是因为尾随空格

    试试这个:

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

    我将其更改为:
    \s*for\s*months\s*更改为
    ,以允许开始时有任何空格,但它仍然不匹配,这是因为在上面的示例中,末尾有额外的空格。我将其更改为:
    \s*for\s*months\s*更改为
    ,以允许开始时有任何空格,但它仍然不匹配,这是因为在上面的示例中,末尾有额外的空格。您可能有额外的空格(复制代码时,在“to”后面有额外的空格)。这里有一个链接可以帮助您解决问题。您可能有额外的空格(复制代码时,在“to”之后会有额外的空格)。这里有一个链接可以帮助您解决问题。在您的回答之后,我从OPs问题中选择了“下面的文本行”,选择显示了尾随空格。接得好!:)在您的回答之后,我从OPs问题中选择了“下面的文本行”,选择显示了尾随空格。接得好!:)