- 此问题在此处已有答案**:
Regex.Match whole words(4个答案)
Regex match entire words only(7个答案)
Bash regex finding particular words in a sentence(4个答案)
1年前关闭。
我还没有找到任何成功修复这个正则表达式:B ..年
我目前正在搜索一个文本文件,其输出如下:Baby Babylon婴儿乐园电子宝贝
我应该在表达式中做什么修改才能只输出'Baby'而排除其他三个?
编辑:如果我有另一个条目-"布莱"?我需要得到"宝贝"和"布莱"。
2条答案
按热度按时间nwo49xxi1#
正则表达式:
测试here。
要同时找到'Baby'和'Blay',您需要将正则表达式更新为:
测试here。
说明:
从here大约**\b**:
元字符\b是类似于插入符号和美元符号的定位符。它在称为"单词边界"的位置进行匹配。此匹配长度为零。
有三种不同的位置可作为单词边界:
简单地说:\b允许您使用\bword\b形式的正则表达式执行"全字搜索"。"单词字符"是可用于构成单词的字符。所有不是"单词字符"的字符都是"非单词字符"。
从here大约**(宝贝|布莱):
如果要搜索文字cat或dog,请使用竖线或管道符号分隔这两个选项:猫|如果你想要更多的选项,只需展开列表:猫|制动爪|鼠标|鱼。
在所有正则表达式运算符中,交替运算符的优先级最低。也就是说,它告诉正则表达式引擎要么匹配竖线左侧的所有内容,要么匹配竖线右侧的所有内容。如果要限制交替运算的范围,则需要使用括号进行分组。如果要改进第一个示例,使其仅匹配整个单词,则需要使用\b(cat| dog)\b**.这告诉正则表达式引擎找到一个单词边界,然后是cat或dog,然后是另一个单词边界.如果我们省略了括号,那么正则表达式引擎将搜索单词边界,然后是cat,或者dog,然后是单词边界.
bmp9r5qi2#
除了 virolino 的答案外:
Regex Metacharacter
\b
匹配单词边界,即两个字符之间的边界,其中一个是单词字符,另一个不是单词字符,如果第一个字符(或最后一个字符)是单词字符,则加上字符串的开头和结尾。单词字符与
\w
character class匹配--对于单词字符实际上是什么似乎没有真实的的共识,但[A-Za-z0-9_]
似乎是最小值,因此您的示例在任何情况下都应该使用 virolinos 模式(\bBaby\b
)。此外,模式匹配以下字符串
参见my fork of virolinos regex test。