Skip to content

RegularExpression

kcp edited this page Jul 13, 2020 · 2 revisions

title: 正则表达式 date: 2018-11-21 10:56:52 tags: categories: - 基础知识

目录 start

  1. 正则表达式学习
    1. 基本字符
    2. 特殊字符
    3. 变量
    4. 零宽断言
      1. 先行断言
      2. 后发断言
      3. 负向零宽断言
    5. 编程语言
      1. Python
      2. Shell
  2. Tips

目录 end|2020-06-24 16:51|


正则表达式学习

Regular Expression Language - Quick Reference

shell regex

正则匹配的本质是自动机

基本字符

模式 作用
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用:([0-9]{3})? 匹配出现三个数字连着的字符串
{N} 匹配前面出现的子表达式 N 次
{N,M} 匹配前面的子表达式 N-M 次
[...] 匹配字符集的任一单个字符 : [abcdejk]就是匹配里面任一单个字符
[^...] 不匹配此集合中任一字符,包括某一范围的字符:[^0-9] 字符串中不含数字
[x-y] 匹配x-y范围内单一字符 : [0-9] [a-z]
* 匹配前面的子表达式 0或多次。
+ 匹配前面的子表达式 1或多次。
? 匹配前面的子表达式 0或1次,或指明一个非贪婪限定符。
. 匹配除换行符 \n之外的任何 单个字符。
\ 将下一个字符标记为或转义字符、或原义字符、或向后引用、或八进制转义符。'\n' 匹配换行符。
` `

以上字符 要想表示原字符都需转义


特殊字符

模式 作用
\d 匹配任何十进制数字 与[0-9]相同 \D与之相反
\w 匹配任何字母数字字符 与 [a-zA-Z0-9_] 相同, \W与之相反
\s 匹配任何空字符(空格 tab 回车) 与 [\n\t\r\v\f] 相同 \S与之相反
\b 匹配任何单词的边界 \B与之相反
\N 匹配已保存的子组N次 name\100
\c 逐字匹配任何特殊字符 c 就是转义字符的使用
\A \Z 匹配字符串的开始或结束

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。 正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。


变量

常用于正则替换

  1. (\w*)_(\w*)_(\w*) => \l$1\u$2\u$3
    • user_name_flag => userNameFlag

零宽断言

用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b, ^, $, <, >, 那样用于指定一个位置
这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言

参考: 零宽断言

先行断言

(?=exp)也叫零宽度正预测先行断言

后发断言

(?<=exp)也叫零宽度正回顾后发断言

负向零宽断言


编程语言

Python

  • re.jpg

Shell

Tips

Summary

Clone this wiki locally