linux中的正则表达式

1. 基本概念

  • 作用:快速检索、匹配或替换符合特定规则的字符串。
  • 应用场景:验证邮箱/电话、提取网页数据、批量替换文本等。

2. 基础语法

元字符

符号 说明 示例
. 匹配任意单个字符(除换行符) a.c → “abc”
^ 匹配字符串开头 ^Hello → 开头为”Hello”
$ 匹配字符串结尾 world$ → 结尾为”world”
\ 转义特殊字符 \. → 匹配点号.

量词

符号 说明 示例
* 前一个字符出现0次或多次 a* → “”, “a”, “aa”
+ 前一个字符出现1次或多次 a+ → “a”, “aa”
? 前一个字符出现0次或1次 a? → “”, “a”
{n} 前一个字符精确出现n次 a{3} → “aaa”
{n,m} 出现n到m次 a{2,4} → “aa”, “aaa”

字符类

表达式 说明 示例
[abc] 匹配a、b、c中的任意一个 [aeiou] → 匹配元音字母
[a-z] 匹配a到z之间的任意字符 [0-9] → 数字
[^abc] 匹配a、b、c的字符 [^0-9] → 非数字

预定义字符类

符号 等价表达式 说明
\d [0-9] 数字
\w [a-zA-Z0-9_] 字母、数字、下划线
\s [ \t\n\r] 空白符(空格、制表符等)

3. 分组与捕获

  • 分组:使用 () 将表达式分组,可应用量词或捕获内容。
    (ab)+   # 匹配 "ab", "abab", 等
    

  • 捕获:提取匹配内容,如 (\d{3})-(\d{4}) 捕获区号和号码。

4. 边界与选择

  • 单词边界\b(如 \bcat\b 匹配独立的单词”cat”)。
  • 逻辑或|(如 cat|dog 匹配”cat”或”dog”)。

5. 贪婪 vs 非贪婪

  • 贪婪模式:默认尽可能多匹配(如 .* 匹配到行尾)。
  • 非贪婪模式:量词后加 ?,尽可能少匹配(如 .*?)。

6. 常用示例

  • 邮箱^[\w.-]+@[\w.-]+\.\w+$
  • 手机号(简版)^1[3-9]\d{9}$
  • 日期(YYYY-MM-DD)^\d{4}-\d{2}-\d{2}$

7. 工具推荐

  • 在线测试regex101RegExr
  • 学习资源:《精通正则表达式》(书籍)、MDN 正则文档。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容