![grep 的基本正则表达式中的电子邮件匹配正则表达式是什么?](https://linux22.com/image/62567/grep%20%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%8C%B9%E9%85%8D%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我创建了一个文本文件并在其中放入了一些电子邮件地址。然后我用 grep 找到它们。确实有效:
# pattern="^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]{2,}"
# grep -E $pattern regexfile
但只要我保留扩展正则表达式的 -E 选项即可。我需要如何更改上述正则表达式才能使用不带 -E 选项的 grep ?
答案1
请注意,匹配电子邮件地址比您拥有的要困难得多。看 摘自《掌握正则表达式》一书
但是,要回答您的问题,对于基本正则表达式,您的量词需要是*
, \+
或\{m,n\}
(带有反斜杠)之一
pattern='^[a-zA-Z0-9]\+@[a-zA-Z0-9]\+\.[a-z]\{2,\}'
grep "$pattern" regexfile
您需要引用模式变量