regex - sed 和 grep 中单词的开头和结尾

标签 regex sed

我不明白 \b 之间的区别和 \<在 GNU sed 和 GNU grep 中。在我看来 \b可以随时更换\<\\>无需更改匹配字符串集。

更具体地说,我试图找到其中 \bsomething 的例子。和 \\< something不匹配完全相同的字符串。

同样的问题 something\bsomething\\> .

谢谢

最佳答案

我怀疑您是否使用(更常见的)\b 很少有区别。或(更具体的)\<\> ,但我可以想到一个例子。这是相当人为的,我怀疑在大多数现实世界的正则表达式使用中它不会有什么不同,但这应该表明它至少在某些情况下可以有所作为。

如果我有以下文字:

this is his pig

我想知道是否/\bis\b/匹配,如果我改用 /\<is\>/ 也没关系或者我改为使用 /\>is\</
但是如果我的文字是
is this his pig

在"is"之前不再有词尾边界,只有词首边界。使用 /\bis\b/匹配,当然还有 /\<is\>/也是,但是 /\>is\</没有。

然而,在现实生活中,我认为你真的需要能够做出这种区分并不常见,这就是为什么(至少在 sed 之外)\b是正则表达式的普通单词边界标记。

关于regex - sed 和 grep 中单词的开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382272/

相关文章:

sed - 缩小 text/html 模板中的 HTML 文件

python - 正则表达式 - 查找 @ 之后和特定字符之前的文本

javascript - 正则表达式,匹配最后一个模式

python - 用另一列的值替换字符串的一部分

ruby-on-rails - 如何允许正则表达式为空?

使用 sed 命令从文本文件中提取字符串

bash - 使用 shell 脚本删除除每行第一个以外的所有逗号

java - Matcher find() 特定的重复模式

linux - 在 pdb 文件的每 2-3-4 行使用 awk 和 sed 替换文本

linux - 获取两个标记模式之间的线,其中结束模式位于特定列中