Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java \b与我认为的不匹配_Java_Regex - Fatal编程技术网

Java \b与我认为的不匹配

Java \b与我认为的不匹配,java,regex,Java,Regex,我正在使用Java正则表达式匹配字符串“dept.no.2”中的“dept.”,并且没有使用下面的正则表达式“\b(dept\)\b”返回任何匹配项 我的理解是\b将匹配空格,因为它们不是单词字符,但它似乎没有这样做。当我在下面的“\b(dept\)\s*\b”中将\s*添加到正则表达式时,我得到了一个成功的匹配 我阅读原始正则表达式的方式是在单词边界之间匹配dept(带有文字句点)。这不是正确的解读吗 我在这里没有做/没有做什么愚蠢的事情?\b匹配的内容大致如下:(^\w\w\w\w$) 换句

我正在使用Java正则表达式匹配字符串“dept.no.2”中的“dept.”,并且没有使用下面的正则表达式“\b(dept\)\b”返回任何匹配项

我的理解是\b将匹配空格,因为它们不是单词字符,但它似乎没有这样做。当我在下面的“\b(dept\)\s*\b”中将\s*添加到正则表达式时,我得到了一个成功的匹配

我阅读原始正则表达式的方式是在单词边界之间匹配dept(带有文字句点)。这不是正确的解读吗


我在这里没有做/没有做什么愚蠢的事情?

\b
匹配的内容大致如下:
(^\w\w\w\w$)

换句话说,非单词字符旁边(或字符串的开头/结尾)的单词字符(
[a-zA-Z0-9\
)。您当前正试图使用
\。\b
匹配“”;句点将匹配,但后面没有单词边界(因为它是两个非单词字符)


这就是为什么您可以在
\s*
中添加它,并且它会起作用,因为现在单词边界将匹配“n”之间的空格。我建议您使用表达式
\b(dept\)
,因为
\.
在您的场景中几乎与
\b
同义(
t
一个单词字符,后跟
\.
一个非单词字符)。

\b
与以下内容相匹配:
(^\w\w\w\w\124;\ w$)

换句话说,非单词字符旁边(或字符串的开头/结尾)的单词字符(
[a-zA-Z0-9\
)。您当前正试图使用
\。\b
匹配“”;句点将匹配,但后面没有单词边界(因为它是两个非单词字符)


这就是为什么您可以在
\s*
中添加它,并且它会起作用,因为现在单词边界将匹配“n”之间的空格。我建议您使用表达式
\b(dept\)
,因为
\.
在您的场景中几乎与
\b
同义(
t
一个单词字符,后跟
\.
一个非单词字符)。

\b
与以下内容相匹配:
(^\w\w\w\w\124;\ w$)

换句话说,非单词字符旁边(或字符串的开头/结尾)的单词字符(
[a-zA-Z0-9\
)。您当前正试图使用
\。\b
匹配“”;句点将匹配,但后面没有单词边界(因为它是两个非单词字符)


这就是为什么您可以在
\s*
中添加它,并且它会起作用,因为现在单词边界将匹配“n”之间的空格。我建议您使用表达式
\b(dept\)
,因为
\.
在您的场景中几乎与
\b
同义(
t
一个单词字符,后跟
\.
一个非单词字符)。

\b
与以下内容相匹配:
(^\w\w\w\w\124;\ w$)

换句话说,非单词字符旁边(或字符串的开头/结尾)的单词字符(
[a-zA-Z0-9\
)。您当前正试图使用
\。\b
匹配“”;句点将匹配,但后面没有单词边界(因为它是两个非单词字符)


这就是为什么您可以在
\s*
中添加它,并且它会起作用,因为现在单词边界将匹配“n”之间的空格。我建议您使用表达式
\b(dept\)
,因为
\.
在您的场景中几乎与
\b
同义(
t
一个单词字符,后跟
\.
一个非单词字符)。

显示您的代码。这可能是一个更好的指示您正在做什么。单词边界
\b
匹配单词字符和非单词字符之间的边界。所以
\bdept\。\b
在这里不起作用。相反,您可以使用
\bdept\。
应该注意的是
\b
是一个零宽度断言,不匹配任何字符。它匹配字符之间的位置。其他零宽度断言包括锚、lookaheads和lookbehinds.hwnd,谢谢Sam在下面也提到了这一点,这解决了我的问题。ridgerunner,也谢谢我会记住的。给我们看看你的代码。这可能是一个更好的指示您正在做什么。单词边界
\b
匹配单词字符和非单词字符之间的边界。所以
\bdept\。\b
在这里不起作用。相反,您可以使用
\bdept\。
应该注意的是
\b
是一个零宽度断言,不匹配任何字符。它匹配字符之间的位置。其他零宽度断言包括锚、lookaheads和lookbehinds.hwnd,谢谢Sam在下面也提到了这一点,这解决了我的问题。ridgerunner,也谢谢我会记住的。给我们看看你的代码。这可能是一个更好的指示您正在做什么。单词边界
\b
匹配单词字符和非单词字符之间的边界。所以
\bdept\。\b
在这里不起作用。相反,您可以使用
\bdept\。
应该注意的是
\b
是一个零宽度断言,不匹配任何字符。它匹配字符之间的位置。其他零宽度断言包括锚、lookaheads和lookbehinds.hwnd,谢谢Sam在下面也提到了这一点,这解决了我的问题。ridgerunner,也谢谢我会记住的。给我们看看你的代码。这可能是一个更好的指示您正在做什么。单词边界
\b
匹配单词字符和非单词字符之间的边界。所以
\bdept\。\b
在这里不起作用。相反,您可以使用
\bdept\。
应该注意的是
\b
是零宽度断言,与