通过例子学习正则表达式(基础部分)
惯例上表
元字符 | 说明 | 元字符 | 说明 |
. | 匹配任意单个字符 | | | 逻辑或操作符 |
[] | 匹配字符集中的一个字符 | [^] | 对字符集取非 |
- | 定义一个区间 | \ | 对下一个字符转义 |
* | 匹配前一个字符或子表达式,零或多次 | *? | *的懒惰型 |
+ | 匹配前一个字符或子表达式,一或多次 | +? | +的懒惰型 |
? | 匹配前一个字符或子表达式,零或一次 | {n} | 匹配前一个字符或子表达式n次重复 |
{m, n} | 匹配前一个字符或子表达式,m-n次重复(包括m,n次) | {n, } | 匹配前一个字符或子表达式,大于等于n次重复 |
{n, }? | {n, }的懒惰型 | ^ | 匹配字符串开始 |
\A | 匹配字符串开始 | $ | 匹配字符串结束 |
\Z | 匹配字符串结束 | \< | 匹配单词开始 |
\> |
匹配单词结束 | \b | 匹配单词边界 |
\B | 匹配非单词边界(\b的非) | [\b] | 匹配退格符 |
\c | 匹配一个控制符 | \d | 匹配任意数字 |
\D | 匹配任意非数字(\d的非) | \f | 匹配换页符 |
\n | 匹配换行符 | \r | 匹配回车 |
\s | 匹配一个空白符 | \S | 匹配一个非空白符(\s的非) |
\t | 匹配一个制表符 | \v | 匹配一个垂直制表符 |
\w | 匹配任意一个字母、数字、下划线 | \W | 匹配任意一个非字母、数字、下划线(\w的非) |
\x | 匹配一个十六进制数字 | \0 | 匹配一个八进制数字 |
() | 定义子表达式 | \1 | 匹配第一个子表达式。\2匹配第二个子表达式。...等 |
?= | 向前查找 | ?<= | 向后查找 |
?! | 负向前查找 | ?<! | 负向后查找 |
?() | 条件(if) | ?()| | 条件(if else) |
\E | 结束\L、\U转换 | \l | 下一个字符转换为小写 |
\L | 把后边字符转换为小写,直到碰见\E | \u | 下一个字符转换为大写 |
\U | 把后边字符转换为大写,直到碰见\E | ?m | 启用分行匹配 |
说明:橙色部分为匹配内容。
1、 “.”
文本:
work.txt
work1.txt
work2.txt
rules.txt
正则表达式:
work. 解释:work后一位字符可以匹配任意字符
匹配结果:
work.txt
work1.txt
work2.txt
rules.txt
2、“|”
文本: mywork.txt youwork.txt otherwork.txt 正则表达式: mywork|youwork 解释:相当于两个正则表达式,分别匹配“mywork”、“youwork” 匹配结果: mywork.txt youwork.txt otherwork.txt
3、“[]”
文本:
mywork.txt
youwork.txt
otherwork.txt
正则表达式:
[yu]work 解释:work的前一个字符匹配“y”或者“u”
匹配结果:
mywork.txt
youwork.txt
otherwork.txt
4、“[^]”
文本: mywork.txt youwork.txt otherwork.txt 正则表达式: [^yu]work 解释:work的前一个字符匹配除“y”和“u”的任意字符 匹配结果: mywork.txt youwork.txt otherwork.txt
5、“-”
文本: mywork1.txt mywork2.txt mywork3.txt mywork4.txt 正则表达式: work[1-3] 解释:work的后一个字符匹配数字1到3(1、2、3) 匹配结果: mywork1.txt mywork2.txt mywork3.txt mywork4.txt
6、“\”
文本:
mywork.txt
mywork.pdf
mywork.txt
mywork.doc
正则表达式:
work\.txt 解释:匹配含“work.txt”的字符,“.”匹配任意字符,“\.”匹配“点”(即本身)
匹配结果:
mywork.txt
mywork.pdf
mywork.txt
mywork.doc
7、“*”
文本: mywork.txt youwork.pdf otherwork.txt myyyywork.doc mwork.doc 正则表达式: y*work 解释:匹配“work”,前一个字符出现“y”的次数为零或多次 匹配结果: mywork.txt youwork.pdf otheork.txt myyyywork.doc mwork.doc
8、“*?”
文本: mywork.txt myyywyyywork.pdf mwork.txt 正则表达式: m.*?w 解释:匹配“m”和“w”之间的任意字符(y尽量的少) 匹配结果:
mywork.txt myyywyyywork.pdf (如果正则为“m.*w”,则匹配结果为 myyywyyywork.pdf)
mwork.txt