详细请看:正则表达式30分钟入门教程
http://help.locoy.com/Document/Learn_Regex_For_30_Minutes.htm
讲解:
元字符如下. ^ $ * + ? { } [ ] | ( ) \
^ $ * + ? 解释如下
符号 | 语义 |
---|---|
* | 匹配次数一次或多次 |
. | 匹配任意一个字符 |
.* | 匹配除换行所有字符任意次数 |
| | 或 |
\b | 匹配一个空格(英文原文:Word boundaries) |
\bhe\b | 匹配单词he |
he | 匹配包含he的字符串,例如he、hello、them |
^a | 以a开头的字符串 |
a$ | 以a结尾的字符串 |
bucket | 匹配字符串 bucket |
^.2$ | 以任意开头 以2结尾的双位字符(表示匹配一行) |
* | 匹配前面的子表达式零次或多次 |
.* | 匹配任意多个字符为一组 |
+ | 匹配前面的子表达式一次或多次 |
? | 匹配前面的子表达式零次或一次 |
?: | 取消组的权限 |
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
其中 ?: 是非捕获元之一,还有两个非捕获元是 ?= 和 ?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
abc* 匹配 abccc ab abc (贪婪匹配,默认匹配最多c)
abc*? 匹配 ab (惰性匹配,默认匹配最少c)
转义字符
\跟元字符去除特殊功能
\跟普通字符实现特殊功能
\1 代表第一个小括号捕获的
\2 代表第二个小括号捕获的,以此类推
\d 匹配一个数字 等价于[0-9]
\D [^0-9] 任意非数字
\s [\t\n\r\f\v] 任意空白字符(空格)
\S [^\t\n\r\f\v] 任意非空白字符
\w [a-zA-Z0-9_] 匹配任何字母数字字符
\W [^a-zA-Z0-9_]
\b 匹配特殊字符边界 例如 空格, &#
\t 制表符
\n 换行符
\r 回车符
\\ \
\. .
[[::]] 匹配字符簇
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母或数字
[[:space:]] 任何空白字符
[[:upper:]] 所有大写字母
[[:lower:]] 所有小写字母
[[:punct:]] 所有标点符号
[[:xdigit:]] 任何十六进制数字,相当于[0-9a-fA-F]
字符簇:
[] 匹配...所有的单字符
[^...] 匹配除了...以外的单字符(取反)
[a-z] 匹配所有的小写字母
[A-Z] 匹配所有的大写字母
[a-zA-Z] 匹配所有的字母
[0-9] 匹配所有的数字
[0-9\.\-] 匹配所有的数字,句号和减号
[\f\r\t\n] 匹配所有的白字符
^[a-zA-Z_]$ 匹配所有的单个字母
[^a-z] 除了小写字母以外的所有字符
[^\\\/\^] 除了(\)(/)(^)之外的所有字符
[^\"\'] 除了双引号(")和单引号(')之外的所有字符
花括号{} 用来确定 前面的内容 出现的次数。
{x} 字符或字符簇只出现x次
{x,} 字符或字符簇出现x或更多的次数
{x,y} 字符或字符簇至少出现x次,但不超过y次
^[[:alpha:]]{3}$ 匹配所有的三字母单词
^a{2,4} 匹配以aa,aaa或者aaaa开头
^a{2,}$ 匹配只有a、并且两个字母以上的字符串
a{2,} 两个以及以上a
\t{2} 两个制表符
.{2} 匹配任意两个字符
例子1:
i=python
from=AUTO
to=AUTO
smartresult=dict
client=fanyideskweb
salt=1527990461914
sign=de9dc50018fd36e21f75b546c75ea5fa
doctype=json&version=2.1
keyfrom=fanyi.web
action=FY_BY_REALTIME
typoResult=false
用支持正则表达式替换的软件(例如sublime3)
用^(.*)=(.*) 匹配一个字符串,以任意开头,以任意结尾,中间以=分隔
"/1":"/2" 捕获的第一()内容、第二()内容分别用" "修饰,两者以:分隔
"i":"python"
"from":"AUTO"
"to":"AUTO"
"smartresult":"dict"
"client":"fanyideskweb"
"salt":"1527990461914"
"sign":"de9dc50018fd36e21f75b546c75ea5fa"
"doctype=json&version":"2.1"
"keyfrom":"fanyi.web"
"action":"FY_BY_REALTIME"
"typoResult":"false"
例子2:
将例子1反向替换
用正则表达式^"(.*)":"(.*)",$替换\1=\2