gpt4 book ai didi

带尖括号的正则表达式行为

转载 作者:行者123 更新时间:2023-12-04 00:43:31 25 4
gpt4 key购买 nike

请向我解释为什么以下表达式不输出任何内容:

echo "<firstname.lastname@domain.com>" | egrep "<lastname@domain.com>"

但以下是:
echo "<firstname.lastname@domain.com>" | egrep "\<lastname@domain.com>"

第一个的行为符合预期,但第二个不应该输出。 “\<”在正则表达式中是否被忽略或导致一些其他特殊行为?

最佳答案

AS @hwnd 说 \<匹配单词的开头。 ie一个词的边界\b必须存在于起始单词字符之前(输入中\<之后的字符必须是单词字符),

在你的例子中,

echo "<firstname.lastname@domain.com>" | egrep "<lastname@domain.com>"

在上面的例子中,egrep 检查文字 <姓氏字符串之前的字符。但没有,所以它什么也不打印。
$ echo "<firstname.lastname@domain.com>" | egrep "\<lastname@domain.com>"
<firstname.**lastname@domain.com>**

但在这个例子中,一个词边界 \b存在于 lastname 之前字符串,所以它打印匹配的字符。

更多示例:
$ echo "namelastname@domain.com" | egrep "\<e@domain.com"
$ echo "namelastname@domain.com" | egrep "\<lastname@domain.com"
$ echo "namelastname@domain.com" | egrep "\<com"
namelastname@domain.**com**
$ echo "<firstname.lastname@domain.com>" | egrep "\<@domain.com>"
$ echo "n-ame-lastname@domain.com" | egrep "\<ame-lastname@domain.com"
n-**ame-lastname@domain.com**

关于带尖括号的正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24622402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com