Regex 具有非单词字符的单词边界

Regex 具有非单词字符的单词边界,regex,Regex,使用正则表达式匹配表达式 \b.\b 为什么这两个示例匹配如下(突出显示): a#b#c# a#b#c#d 具体来说,为什么第一个字符串不匹配,并且包含到最后一个的所有内容 由于单词边界(\b)是零宽度匹配,可以在单词字符(\w)和非单词字符(\w)之间匹配,或者在单词字符和字符串的开头或结尾之间匹配,因此我不确定以非单词字符结尾的表达式会如何影响匹配 这是您当前的正则表达式: \b.*#\b 这是第一个示例输入: a #b #c # ^^^^^^ <-- last word

使用正则表达式匹配表达式
\b.\b

为什么这两个示例匹配如下(突出显示):

a#b#
c#

a#b#c#
d

具体来说,为什么第一个字符串不匹配,并且包含到最后一个的所有内容


由于单词边界(\b)是零宽度匹配,可以在单词字符(\w)和非单词字符(\w)之间匹配,或者在单词字符和字符串的开头或结尾之间匹配,因此我不确定以非单词字符结尾的表达式会如何影响匹配

这是您当前的正则表达式:

\b.*#\b
这是第一个示例输入:

a #b #c #
^^^^^^      <-- last word boundary is here

这是您当前的正则表达式:

\b.*#\b
这是第一个示例输入:

a #b #c #
^^^^^^      <-- last word boundary is here

在第一个字符串
a#b#c#

没有单词边界
a#b#c#
EOS

所以
\b.\b
匹配
a#b#
c#,因为
a#b#
c之间有一个单词边界#


在第二个问题上,这更像是一个匹配问题
第一个是单词边界,第二个是单词边界。
它必须与#,
所以它在
a#b#c#
d之间找到它


单词边界一开始很棘手,

但是如果你使用一个短语,你就不会再被它们弄糊涂了

在第一个字符串
a#b#c#

没有单词边界
a#b#c#
EOS

所以
\b.\b
匹配
a#b#
c#,因为
a#b#
c之间有一个单词边界#


在第二个问题上,这更像是一个匹配问题
第一个是单词边界,第二个是单词边界。
它必须与#,
所以它在
a#b#c#
d之间找到它


单词边界一开始很棘手,

但是如果你使用一个短语,你就不会再被它们弄糊涂了

\b只能匹配字母、数字、下划线、汉字。遗憾的是#不在其中。

\b只能匹配字母、数字、下划线、,汉字。遗憾的是#不在其中。

你到底想匹配什么?我最初的意图是在文本中匹配以#结尾的单词。例如,abc中的abc和cde。你到底想匹配什么?我最初的意图是匹配文本中以#结尾的单词。例如,abc中的abc和cde,谢谢你的解释!我不知道使用\b的“反之亦然”部分,即非单词字符后跟单词字符。很好的解释。感谢您的解释!我不知道使用\b的“反之亦然”部分,即非单词字符后跟单词字符。很好的解释。祝你好运!你的评论对我的理解很有帮助。正则表达式功能强大,但要想正确使用它很难。祝你好运!你的评论对我的理解很有帮助。正则表达式功能强大,但要正确使用非常困难。
\b
与任何字符都不匹配!这是一个匹配单词边界的零长度断言。
\b
不匹配任何字符!它是一个匹配单词边界的零长度断言。