一、BRE与ERE的区别POSIX标准将正则表达式分为两类:基本正则表达式(Basic Regular Expression,BRE)和扩展正则表达式(Extended Regular Expression,ERE)。两者的核心区别在于支持的元字符集不同。BRE支持的元字符包括:^ $ . [ ] *,其他字符均视为字面量。而ERE则额外添加了以下元字符:( ) { } ? + |。在Linux命令行中,grep默认使用BRE。若要使用ERE,可以添加-E选项(或使用传统命令egrep)。例如:# BRE模式(默认)grep'bzip'dirlist*.txt# ERE模式grep-E'bz|gz'dirlist*.txt注意:在ERE中,括号、花括号等元字符若要表示字面量,需用反斜杠转义;而在BRE中,括号和花括号需要通过反斜杠转义才能获得元字符含义。二、扩展正则表达式的核心特性1. 交替(Alternation)交替使用竖线(|)表示“或”,可以匹配多个备选字符串。结合圆括号(())可以明确作用范围。示例:$echo"AAA"|grep-E'AAA|BBB'AAA $echo"BBB"|grep-E'AAA|BBB'BBB $echo
Linux正则表达式进阶:BRE/ERE、交替、量词与实战应用
一、BRE与ERE的区别POSIX标准将正则表达式分为两类:基本正则表达式(Basic Regular Expression,BRE)和扩展正则表达式(Extended Regular Expression,ERE)。两者的核心区别在于支持的元字符集不同。BRE支持的元字符包括:^ $ . [ ] *,其他字符均视为字面量。而ERE则额外添加了以下元字符:( ) { } ? + |。在Linux命令行中,grep默认使用BRE。若要使用ERE,可以添加-E选项(或使用传统命令egrep)。例如:# BRE模式(默认)grep'bzip'dirlist*.txt# ERE模式grep-E'bz|gz'dirlist*.txt注意:在ERE中,括号、花括号等元字符若要表示字面量,需用反斜杠转义;而在BRE中,括号和花括号需要通过反斜杠转义才能获得元字符含义。二、扩展正则表达式的核心特性1. 交替(Alternation)交替使用竖线(|)表示“或”,可以匹配多个备选字符串。结合圆括号(())可以明确作用范围。示例:$echo"AAA"|grep-E'AAA|BBB'AAA $echo"BBB"|grep-E'AAA|BBB'BBB $echo