号称“天书”的正则表达式,要这么来讲,我小学三年级已经满分了( 二 )


  • * 匹配前面的条目零次或多次 。
  • ? 匹配前面的条目零次或一次 。
  • + 匹配前面的条目一次或多次 。
  • {n} 与前面的条目正好匹配n次 。
  • {n,} 至少匹配前面的条目n次 。
  • {,m} 最多匹配前面的条目m次 。
  • {n,m} 匹配前面的条目n到m次 。
*(星号)字符与前面的项目匹配零次或多次 。 以下内容将与“right”、“sright”、“ssright”等匹配:
grep 's*right'下面是更高级的模式 , 它匹配以大写字母开头、以句点或逗号结束的所有行 。
.*正则表达式匹配任意数量的任意字符:
grep -E '^[A-Z].*[.,]$' file.txt【号称“天书”的正则表达式,要这么来讲,我小学三年级已经满分了】?(问号)字符使前面的项目成为可选的 , 并且它只能匹配一次 。 下面的内容将同时匹配“bight”和“right” 。
?字符使用反斜杠进行转义 , 因为我们使用的是基本正则表达式:
grep 'b\?right' file.txt下面是使用扩展正则表达式的相同正则表达式:
grep -E 'b?right' file.txt+(加号)字符与前面的项目匹配一次或多次 。 下面将匹配“sright”和“ssright” , 但不匹配“right”:
grep -E 's+right' file.txt大括号字符{}允许你指定匹配必须出现的确切数量、上限或下限或范围 。
以下内容匹配3到9位之间的所有整数:
grep -E '[[:digit:]]{3,9}' file.txt交替术语交替是一个简单的“或” 。 交替运算符|(竖线)允许你指定不同可能的匹配项 , 这些匹配项可以是文字字符串或表达式集 。 此运算符在所有正则表达式运算符中优先级最低 。
在下面的示例中 , 我们将在Nginx日志错误文件中搜索单词fatal、error和critical的所有匹配项:
grep 'fatal\|error\|critical' /var/log/nginx/error.log如果使用扩展正则表达式 , 则不应转义运算符| , 如下所示:
grep -E 'fatal|error|critical' /var/log/nginx/error.log分组分组是正则表达式的一项功能 , 它允许将模式分组在一起 , 并将它们作为一个项目引用 。 组是使用括号()创建的 。 使用基本正则表达式时 , 括号必须用反斜杠(\)转义 。
下面的示例同时匹配“fearless”和“less” 。 ?量词使(fear)组成为可选的:
grep -E '(fear)?less' file.txt特殊转义符GNU grep包括几个元字符 , 这些元字符由一个反斜杠后跟一个常规字符组成 。
下表展示了一些最常见的特殊反斜杠表达式:
  • \b 匹配单词边界 。
  • \< 匹配单词开头的空字符串 。
  • \> 匹配单词末尾的空字符串 。
  • \w 匹配一个单词 。
  • \s 匹配空格 。
下面的模式将匹配单独的单词“abject”和“object” 。 如果嵌入到较大的单词中 , 它将与单词不匹配:
grep '\b[ao]bject\b' file.txt写在最后正则表达式用于文本编辑器、编程语言和命令行工具 , 如grep、sed和awk 。
在搜索文本文件、编写脚本或筛选命令输出时 , 了解如何构造正则表达式非常有用 。