软文网站大全,深圳福田区到访场所,甘肃省建设工程造价信息网站,广州动画制作公司简介
正则表达式分为两种语法#xff1a;POSIX标准的语法#xff0c;Perl语法。
正则表达式的POSIX规范#xff0c;分为基本型正则表达式#xff08;Basic Regular Expression, BRE#xff09;#xff0c;扩展型正则表达式#xff08;Extended Regular ExpressionPOSIX标准的语法Perl语法。
正则表达式的POSIX规范分为基本型正则表达式Basic Regular Expression, BRE扩展型正则表达式Extended Regular ExpressionERE 和SRESimple Regular Expression已经被弃用deprecated因为BRE和SRE都可以backward compatibility。
grep、vi、sed都属于BRE元字符metacharacter需要转译例如在BRE中()和{}需要指定为\(\)和\{\}才可以使用但是在ERE中则不需要进行转译
egrep、awk属于ERE元字符不需要转译
一个正则表达式通常称为一个模式pattern。
HINT Perl语法被广泛使用在grep中使用Perl语构的regexgrep -P
Basic concepts
1. Boolean “or”
|
2. Grouping
()
3. Quantification ?
*
{n}
{min,}
{,max}
{min,max}
4. Wildcard
.
PCRE(Perl Compatible Regular Expression)
Perl兼容正则表达式元字符介绍
MetacharacterDescriptionExample\将下一个字符标记为一个特殊字符File Format Escape或一个原义字符Identity Escape有12个“^$()*?.[\{”等。“n”字符匹配n字符“\n”匹配一个换行符。\\“匹配一个“\””\(匹配一个“(”^匹配以某个字符串开始的行^abc匹配abc不匹配eabc$匹配以某个字符串结束的行abc$匹配ef abc不匹配abc ef*匹配前面的子表达式0次或多次匹配前面的子表示1次或多次?匹配前面的子表示0次或1次{n}匹配n次o{2}可以匹配到food中的两个o不能匹配到Bob中的一个o{n,}至少匹配n次{n,m}匹配最少n次最多m次?非贪心量化Non-greedy quantifiers。其跟随在其他重复修饰符*,,?,{n},{n,},{n,m}后面时匹配模式是非贪婪的。.匹配除\r\n之外的任何单个字符(pattern)捕获组capturing group。匹配pattern并获取这一匹配的子字符串。该子字符串用于后向引用。(\(\w\))\s\1匹配(hello) (hello) world中的(hello) (hello)(?:pattern)非捕获组non-capturing group。匹配pattern不获取这一匹配的子字符串非获取匹配。即不存储匹配的子字符串用于后向引用(?pattern)正向肯定预查look ahead positive assert。在匹配pattern处开始匹配查找字符串这是一个非捕获匹配。Windows(?95|98|NT|2000)匹配Windows2000中的Windows不匹配Windows3.1中的Windows。(?!pattern)正向否定预查negative assert。在不匹配pattern处查找匹配字符串。industr(?!y)匹配industries不匹配industry(?pattern)反向look behind肯定预查。与正向肯定预查相似只是方向相反。非捕获匹配。(?95|98|NT|2000)Windows能匹配到2000Windows中的Windows不能匹配到Windows2000中的Windows(?!pattern)反向否定预查。与正向否定预查相似只是方向相反(?!95|98|NT|2000)Windowsbr/能匹配到3.1Windows不能匹配到2000Windowsx|y没有包围在()里范围是整个正则表达式[xyz]字符集合character class。匹配包含的任意一个字符。“[abc]”可以匹配plain中的a可以匹配到branch中的b “a” “c” [^xyz]排除型字符集合negated character classes。匹配未列出的任意字符[a-z]字符范围。可以匹配到不在“a”到“z”范围内的任意字符[^a-z]\d匹配一个数字字符。等价于[0-9]\D匹配一个非数字字符。等价于[^0-9]\s匹配任何空白字符包括空格制表符换页符等。等价于[\f\n\r\t\v]\S匹配任何非空白字符。等价于[^\f\n\r\t\v]\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9]”\W匹配包括下划线的任何非单词字符。等价于“[^A-Za-z0-9]”
Reference
维基百科正则表达式