正则表达式高级用法

匹配模式

1.获取匹配

获取这个匹配结果:可以使用 $num 代替这个匹配的结果,可以用来实现替换功能。

//获取这个匹配结果
(pattern)

2.非获取匹配

//和获取匹配相反,不获取匹配结果
(?:pattern)

预查

以下四种预查方式都是非获取匹配

1.正向肯定预查

与它前面的匹配表达式衔接,并通过它自己的表达式筛选前面的匹配结果
表达式:(?=pattern)

//可以匹配 Windows2000 中的Windows
//无法匹配 Windows98
Windows(?=2000)

2.正想否定预查

与它前面的匹配表达式衔接,并通过它自己的表达式反向筛选前面的匹配结果
表达式:(?!pattern)

//可以匹配 Windows98 或者 Windows3.1 中的Windows
//无法匹配 Windows2000
Windows(?!2000)

3.反向肯定预查

与它后面的匹配表达式衔接,并通过它自己的表达式筛选前面的匹配结果
表达式:(?<=pattern)

//可以匹配 2000Windows 中的Windows
//无法匹配 98Windows
(?<=2000)Windows

4.反向否定预查

与它后面的匹配表达式衔接,并通过它自己的表达式反向筛选前面的匹配结果
表达式:(?

//可以匹配 98Windows 或 3.1Windows 中的Windows
//无法匹配 2000Windows
(?<!2000)Windows

移动与替换

//使中括号内的第一列数字和第二列数字位置互换
//例1:
[01 02]		#hi
[03 04]		#hello
[05 06]		#wrold

//替换效果:
[02 01]		#hi
[04 03]		#hello
[06 05]		#wrold

//正则匹配式:
/**
 * 一共有四个括号内的正则式,不过仅有第二和第三个是获取匹配,
 * 所以替换式使用符号$1(代表第一列)、$2(代表第二列)
 */
(?<=\[)([0-9]{2})\s([0-9]{2})(?=\])
//替换匹配式:
$2 $1
//使 ‘#’ 号后面的单词加上相同的后缀
//例2:
[01 02]		#hi
[03 04]		#hello
[05 06]		#wrold

//替换效果:
[01 02]		#hi Gloep
[03 04]		#hello Gloep
[05 06]		#wrold Gloep

//正则匹配式:
/**
 * 一共有两个括号内的正则式,不过仅有第一个是获取匹配
 * 所以替换式使用符号 ‘$1’ 代指匹配到的单词
 */
(?<=#)([a-z]+)
//替换匹配式:
$1 Gloep

你可能感兴趣的:(软件使用指南,正则表达式,regex)