如果字符
e
并未在文本中出现,或者它只在文本中出现了
1
次,那么模式会匹配。
和星号一样,可以将问号和字符组一起使用。
脚本解说:
如果字符组中的字符出现了
0
次或
1
次,模式匹配就成立。但如果两个字符都出现了,或者其中一个字符出现了2
次,模式匹配就不成立。
1.2 加号【+】
加号是类似于星号的另一个模式符号,但跟问号也有不同。加号表明前面的字符可以出现
1次或多次,但必须至少出现1
次。如果该字符没有出现,那么模式就不会匹配。
示例解说:
如果字符
e
没有出现,模式匹配就不成立。加号同样适用于字符组,与星号和问号的使用方式相同。
脚本解读:
如果字符组中定义的任一字符出现了,文本就会匹配指定的模式。
1.3 花括号{}
ERE
中的花括号允许为可重复的正则表达式指定一个上限。这通常称为
间隔
(
interval
)。
可以用两种格式来指定区间。
- m:正则表达式准确出现m次。
- m, n:正则表达式至少出现m次,至多n次。
这个特性可以精确调整字符或字符集在模式中具体出现的次数。
重点说明:
默认情况下,
gawk
程序不会识别正则表达式间隔。必须指定
gawk
程序的
–re- interval 命令行选项才能识别正则表达式间隔。
示例:
示例解读:
通过指定间隔为
1
,限定了该字符在匹配模式的字符串中出现的次数。如果该字符出现多次,模式匹配就不成立。
同样也可以指定上限和下限
示例解读:
字符
e
可以出现
1
次或
2
次,这样模式就能匹配;否则,模式无法匹配。
下面是字符组的示例:
示例解读:
如果字母
a
或
e
在文本模式中只出现了
1~2
次,则正则表达式模式匹配;否则,模式匹配失败。
1.4 管道符号【|】
管道符号允许在检查数据流时,用逻辑
OR
方式指定正则表达式引擎要用的两个或多个模式。如果任何一个模式匹配了数据流文本,文本就通过测试。如果没有模式匹配,则数据流文本匹配失败。
使用格式:
expr1
|expr2|…
示例:
示例解读:
这个例子会在数据流中查找正则表达式
cat
或
dog
。正则表达式和管道符号之间不能有空格,否则它们也会被认为是正则表达式模式的一部分。
管道符号两侧的正则表达式可以采用任何正则表达式模式(包括字符组)来定义文本。看下面示例:
示例解读:
这个例子会匹配数据流文本中的
cat
、
hat
或
dog
。
1.5 小括号()
正则表达式模式也可以用圆括号进行分组。当将正则表达式模式分组时,该组会被视为一个标准字符。可以像对普通字符一样给该组使用特殊字符。
示例:
示例解读:
结尾的
urday
分组以及问号,使得模式能够匹配完整的
Saturday
或缩写
Sat
。
将分组和管道符号一起使用来创建可能的模式匹配组是很常见的做法。如下示例:
示例解读:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Qc5-1714799623877)]
[外链图片转存中…(img-oaGxYzt0-1714799623878)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!