首页 > 技术文章 > 通过例子学习正则表达式(基础部分)

z-z-z 2017-11-27 18:40 原文

惯例上表

元字符 说明 元字符 说明
. 匹配任意单个字符 |  逻辑或操作符
[] 匹配字符集中的一个字符 [^] 对字符集取非
- 定义一个区间 \ 对下一个字符转义
* 匹配前一个字符或子表达式,零或多次 *? *的懒惰型
+ 匹配前一个字符或子表达式,一或多次 +? +的懒惰型
? 匹配前一个字符或子表达式,零或一次 {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(123)
匹配结果:
    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

 

推荐阅读