欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Shell编程之正则表达式

Shell编程之正则表达式

2025/6/22 21:56:32 来源:https://blog.csdn.net/qq_54324852/article/details/147458242  浏览:    关键词:Shell编程之正则表达式

一.正则表达式

1.1正则表达式的定义

正则表达式是一种用于描述字符序列模式的特殊字符串,它提供了一种强大而灵活的方式来匹配、查找、替换文本中的特定模式。

核心定义

正则表达式是:

  • 普通字符(如字母a-z)和特殊字符(称为"元字符")组成的文本模式

  • 用于字符串的模式匹配模式查找

【  简而言之正则表达式看成一个筛子

     普通搜索像粗筛子,只能筛出"所有苹果";正则是精密筛子,能筛出"所有红色的、直径大于5cm的苹果 】

1.2正则表达式的组成

正则表达式是由普通字符元字符组成的。

1.2.1普通字符

普通文本字符(如 a、1、%),按字面意义匹配目标字符串中的对应字符。

1.2.2元字符

具有特殊功能的保留字符

类别元字符名称/功能示例示例解释
定位符^匹配字符串开始(或行首,多行模式下)^Hello匹配以 "Hello" 开头的字符串
$匹配字符串结束(或行尾,多行模式下)world$匹配以 "world" 结尾的字符串
^$匹配空行
\b单词边界

\bcat\b
 

匹配独立的单词 "cat"
\B非单词边界\Bcat\B匹配非独立的 "cat"(如 "category")
量词*匹配前一个元素 0 次或多次(贪婪)a*匹配 "a", "aa", ""(空字符串)
.*任意长度的任意字符,不包括0次a.*b在 AxxByyB 中会匹配整个 AxxByyB
+表示其前面字符出现一次或多次a+匹配"a","aa","aaa"
?匹配前面子表达式0次或者1次a?匹配"","a"
{n}匹配前一个元素恰好 n 次a{3}匹配 "aaa"
{,n}匹配前一个元素至多n 次a{,2}匹配"" ,"a","aa"
{n,}匹配前一个元素至少 n 次a{2,}匹配 "aa", "aaa", ...
{n,m}匹配前一个元素 n 到 m 次a{2,4}匹配 "aa", "aaa", "aaaa"
字符类[...]匹配括号内的任意单个字符[aeiou]匹配任意一个元音字母
[^...]匹配不在括号内的任意单个字符[^0-9]匹配任意非数字字符
^ [ … ]匹配以…开头^[0-9]匹配以数字开头的字符
.匹配除换行外的任意字符(单行模式下)a.c匹配 "abc", "a c", "a$c" 等
\d匹配数字(等价于 [0-9]\d+匹配连续数字(如 "123")
\D匹配非数字(等价于 [^0-9]\D+匹配连续非数字(如 "abc")
\w匹配单词字符(字母、数字、下划线)\w+匹配 "word_1"
\W匹配非单词字符\W+匹配符号或空格(如 "!! ")
\s匹配空白字符(空格、制表符、换行等)\s+匹配连续空白
\S匹配非空白字符\S+匹配连续非空白(如 "abc")
分组与引用(...)捕获分组并存储匹配内容(ab)+匹配 "ab", "abab"(分组可反向引用)
(?:...)非捕获分组(不存储)(?:ab)+匹配但不保存分组内容
\n反向引用第 n 个捕获组(a)\1匹配 "aa"(引用第一个分组的 "a")
选择与逻辑|逻辑“或”cat|dog匹配 "cat" 或 "dog"
模式修饰符i不区分大小写(标志)/hello/i匹配 "Hello", "HELLO" 等
g全局匹配(标志)/a/g匹配字符串中所有 "a"
m多行模式(标志)/^a/m匹配每行开头的 "a"

1.3扩展正则表达式

1.3.1扩展正则表达式的定义

扩展正则表达式(ERE)是基础正则表达式(BRE)的增强版本,提供了更丰富的元字符和语法,无需使用反斜杠 \ 转义某些特殊字符(如 +, ?, |, ())。

#基本格式#
grep -E-E表示使用扩展正则表达式

1.3.2基础和扩展正则表达式的区别 

基础正则表达式和扩展正则表达式是正则表达式的两种主要语法标准,它们在元字符的使用、功能支持及转义规则上有显著区别。

 1.3.2需要修改的元字符

扩展正则表达式中部分元字符必须转义才能生效,而基础正则表达式中这些字符可以直接使用:

功能基础正则表达式扩展正则表达式(
匹配 1+ 次\+(需要转义)+(直接使用)
匹配 0/1 次\?(需要转义)?(直接使用)
或操作|(需要转义)|(直接使用)
分组\( \)(需要转义)()(直接使用)
量词\{ \}(需要转义){}(直接使用)

正则表达式通常与 awkgrep 和 sed 等命令行工具连用。这些工具在处理文本时,正则表达式是非常强大的匹配和操作模式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词