当前位置: 首页 > 知识库问答 >
问题:

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

端木宏盛
2023-03-14

使用正则表达式匹配表达式
\b。*#\b
为什么这两个示例匹配如下(突出显示):

a#b#c#

< code>a #b #c #d

具体来说,为什么第一个字符串不匹配包含最后一个#之前的所有内容?

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

共有3个答案

董子平
2023-03-14

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

淳于烈
2023-03-14
匿名用户

在第一个字符串a#b#c#
上没有单词边界a#b#c#

所以< code>\b.*#\b匹配< code>a #b #c #,因为< br >在< code>a #b #之间有一个字边界

在第二个#b #c #d它更像是一个匹配问题
,其次是一个单词边界。
它必须匹配 #后面的单词边界,
因此它会在 #b #c # 之间找到它

起初,单词边界很棘手,< br >但是如果你使用一个短语,你就再也不会被它们弄糊涂了。

陆昕
2023-03-14

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

\b.*#\b

这是第一个样本输入:

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

事实上,第一个单词边界出现在初始a之前。然后,*将贪婪地消耗所有东西,直到最后一个#之后是单词边界。正如您所引用的,单词边界出现在单词和非单词字符之间,反之亦然。最后一次发生这种情况是#c,因为最后一个#(请记住,35;不是单词字符)后面没有单词字符。

如果你只想抓取所有以 # 结尾的单词,那么只需使用以下命令:

[^# ]+#

 类似资料:
  • 问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况:

  • 基于正则表达式直到但不包括,我试图匹配所有字符,直到一个单词边界。 例如,在以下字符串中匹配: 我正在使用: 一个否定集 有字边界 和一个加号中继器 这样地: 它应该查找一个“a”,然后为任何非单词边界的字符获取一个或多个匹配项。所以我希望它在

  • 本文向大家介绍如何在JavaScript中删除非单词字符?,包括了如何在JavaScript中删除非单词字符?的使用技巧和注意事项,需要的朋友参考一下 删除非单词字符 要删除非单词字符,我们需要使用正则表达式。删除非单词字符背后的逻辑是,只用nothing('')替换非单词字符。 示例 在下面的示例中,有许多非单词字符,并且在它们之间存在一个名为“ Tutorix是最好的电子学习平台”的文本。因此

  • 问题内容: 说我想匹配短语中短语的存在。 使用python我可以做到这一点: 这行得通,但我想避免使用搜索模式对短语给出肯定的结果。 所以我使用这种模式,像这样: 现在,我没有比赛。 如果搜索模式不包含任何字符,则可以使用。例如: 另外,如果我删除final ,那么它也可以工作: 此外,文档中还提到了 请注意,形式上,\ b定义为\ w和\ W字符之间的边界(反之亦然)或\ w与字符串的开头/结尾

  • 我有一个包含50000个单词的单词列表,还有一个逐行查找字母字符的txt文件。我试图通过按顺序阅读单词列表中的单词来找到包含7个不同字母的单词,我为此编写了一个方法。 首先,我浏览单词并同步字符列表,然后通过导航字母txt文件在单词中相互检查,如果有,则增加计数器。通过这种方式,我试图了解单词中有多少不同的字母,最后,如果它提供了控制,我会将其添加到列表中。 读取txt文件并返回哈希集。 但它不是

  • 问题内容: 将字符串中的单词大写的最佳方法是什么? 问题答案: 修复了Marco Demaio的解决方案,即第一个字母前面没有空格大写。 可以处理国家符号和带重音的字母。 可以处理引号和花括号。