知一杂谈

正则表达式

字数统计: 653阅读时长: 2 min
2016/01/09

正则表达式

用来匹配和处理文本的字符串。基本用途是查找和替换。一种不完备的程序设计语言。


含义列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.  # 英文句号,匹配任意单个字符包括自身,相当于DOS中的 ? ,SQL中的 _ 。
\ # 反斜杠,元字符,转义用。转义自身用 \\ 。
[] # 中括号,元字符,定义一个字符集合。
- # 连字符,字符区间用,比如0-9、A-Z。只能用在字符集合中。
^ # 取非匹配,字符区间用。
\d # 任何一个数字字符。
\D # 任何一个非数字字符。
\w # 任何一个字母数字字符或下划线字符([a-zA-Z0-9_])
\W # 任何一个非字母数字或非下划线字符([^a-zA-Z0-9_])
\s # 任何一个空白字符([\f\n\r\t\v])
\S # 任何一个非空白字符([^\f\n\r\t\v])
+ # 匹配一个或多个字符,放在字符或字符集合后面。
* # 匹配零个或多个字符,放在字符或字符集合后面。
? # 匹配零个或一个字符,放在字符或字符集合后面。
{} # 指定匹配个数的区间或精确值。{6}、{2,4}。

() # 子表达式
| # 或操作符

懒惰型匹配,匹配最小子集。

1
2
3
+?
*?
{n,}?

位置匹配

1
2
3
4
5
\b  # 单词边界
\B # 不是单词边界
^ # 字符串边界开始
$ # 字符串边界结束
(?m) # 分行匹配模式, 使表达式引擎将分隔符当做一个字符串分隔符对待。

回溯引用

下面例子匹配 空格 字符 空格
原始图片
下面的例子使回溯引用
原始图片
解释回溯引用,\1用来获取(\w+)中的字符串。第一个匹配上的of\1引用,就变成表达式[ ]+(\w+)[ ]+of
其中\1代表模式里的第一个子表达式,\2就会代表着第二个子表达式,以此递推。

替换

原始图片

大小写转换测试工具不支持,待测试

向前查找、向后查找

必须要放到一个字表达式中,如下例子,根据:来匹配,但是不消费他。
(?=) 向前查找

原始图片

(?<=) 向后查找
原始图片

(?!) 负向前查找
(?<!) 负向后查找

嵌入条件

(?(brackreference)true-regex)其中?表明这是一个条件,括号里的brackreference是一个回溯引用,true-regex是一个只在backreference存在时才会被执行的子表达式。
原始图片


例子

不区分大小写匹配

原始图片

字符区间匹配

原始图片

取非匹配

原始图片

匹配多个字符

原始图片

子表达式

原始图片

匹配四位数的年份

原始图片

嵌入查找、向后查找组合应用

原始图片

原文作者:noogel

原文链接:https://noogel.xyz/2016/01/09/1.html

发表日期:2016-01-09

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. 正则表达式
  2. 2. 含义列表
    1. 2.1. 懒惰型匹配,匹配最小子集。
    2. 2.2. 位置匹配
    3. 2.3. 回溯引用
    4. 2.4. 替换
    5. 2.5. 向前查找、向后查找
    6. 2.6. 嵌入条件
  3. 3. 例子
    1. 3.1. 不区分大小写匹配
    2. 3.2. 字符区间匹配
    3. 3.3. 取非匹配
    4. 3.4. 匹配多个字符
    5. 3.5. 子表达式
    6. 3.6. 匹配四位数的年份
    7. 3.7. 嵌入查找、向后查找组合应用