正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式

常用工具

磨刀不误砍柴工,找到适合自己的工具,事半功倍。

在线类

http://www.regexpal.com 支持JS
Larsolavtorvik 支持PHP JS
Nregex 支持C#
Rubular 支持Ruby 1.8
http://myregexp.com/ Java
https://www.regexlib.com/ 正则表达式大全
http://www.regular-expressions.info/ 正则表达式相关知识

软件类

Expresso
http://www.ultrapico.com/Expresso.htm 免费

RegexBuddy
http://www.regexbuddy.com/ 可以方便调试正则表达式,但是收费

PowerGREP
http://www.powergrep.com/
功能强大,可以调试各种正则表达式,还可以用正则文件编辑、文件改名等任务。但是收费。

JFLAP
https://www2.cs.duke.edu/csed/jflap/
杜克大学计算机系提供,用来学习形式语言及自动机理论的工具,可以方便地创建DFA、NFA、正则语法、正则表达式。

RegexUtil
https://sourceforge.net/projects/regex-util/
Eclipse的一个插件

字符组

[0123456789]
[0-9]
[a-z]

# 排除
[^0-9]

# 简记
# Digit等价于[0-9],大写相当于加^
\d

# Word等价于[0-9a-zA-Z],大写相当于加^
\w

# Space等价于[ \t\r\n\v\f],大写相当于加^
\s

量词

# \d必须出现2次
\d{2}

# \d出现2~5次
\d{2,5}

# \d至少2次
\d{2,}

# \d必须出现0~5次
\d{0,5}

# \d没限制,任意个,{0,}
\d*

# \d{1,}
\d+

# \d{0,1}
\d?

# 任意字符
.

# 贪婪
.*

# 非贪婪(懒惰)
.*?

# 转移
\{2}
\{2,5}
\*
\+
\?

括号

# 分组 身份证(15或18位)
[1-9]\d{14}(\d{2}[0-9x])?

# 匹配Email
# [email protected]
# [email protected]
# [email protected]
[-\w.]{0,63}@([-a-zA-Z0-9]{1,63}\.)*[-a-zA-Z0-9]{1,63}

# 多选结构 (14位|18位)
([1-9]\d{14}|[1-9]\d{14}\d{2}[0-9x])

# ip
# 1-99
# 100 - 199
# 200 - 249
# 250 - 255
(0-9|[0-9]{2}|1[0-9][0-9]|2[0-4][1-9]|25[0-5])

# ip
# 001 - 099
# 100 - 199
# 200 - 249
# 250 - 255
((00)?[0-9]|0?[0-9]{2}|1[0-9][0-9]|2[0-4][1-9]|25[0-5])
(0{0,2}[0-9]|0?[0-9]{2}|1[0-9][0-9]|2[0-4][1-9]|25[0-5])


# 手机号
# 130-139 150-153 155-159 180 182 185-189
# 0 +86
(0|\+86)?(13[0-9]|15[0-359]|18[025-9])\d{8}

# 引用分组
# 2020-07-24
# group1 2020
(\d{4})-(\d{2})-(\d{2})

# 提取href
# 
  • 闪电新闻|
  • <a\s+href\s*=\s*["']?([^"'\s]+)["']?.*?>([^<]+)</a> # 反向引用 #

    text

    # \s\S比.多换行 <(h1)>[\s\S]*?</\1> # 不限制标签,如

    text

    <([^>]+)>[\s\S]*?</\1> # 标签是大小写字母和数字,并匹配属性 <([a-zA-Z0-9]+)(\s[^>]+)?>[\s\S]*?</\1> #匹配完整ip ((0{0,2}[0-9]|0?[0-9]{2}|1[0-9][0-9]|2[0-4][1-9]|25[0-5])\.){3}(0{0,2}[0-9]|0?[0-9]{2}|1[0-9][0-9]|2[0-4][1-9]|25[0-5])

    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第1张图片

    断言

    单词边界

    # 单词边界
    # Hello World
    \b\w+\b
    

    行起始结束位置
    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第2张图片

    # 匹配第一个单词
    # first line
    # second line
    # last line
    ^\w+
    \A\w+
    
    # 最后一个单词
    \w+$
    \w+\Z
    
    # 去除空白行
    ^\s+$
    

    环视
    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第3张图片

    # 123456
    
    # 肯定向右环视
    (?=\d{3})
    
    # 否定向右环视
    (?!\d{3})
    
    # 肯定向左环视
    (?<=\d{3})
    
    # 否定向左环视
    (?<!\d{3})
    
    # 替换,
    
    # 右侧字符的长度是3的倍数的位置
    (?=(\d{3})+)
    # ,1,2,345
    
    # 右侧字符的长度是3的倍数,右侧不再有数字字符的位置
    (?=(\d{3})+(?!\d))
    # 12,345
    # 上面正常了,但是
    # ,123,456
    # 加上左侧也是数字字符
    (?<=\d)(?=(\d{3})+(?!\d))
    # 123,456
    

    匹配模式

    不区分大小写
    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第4张图片

    单行模式
    点的匹配规则,默认点不匹配换行符。在单行模式下,点可以匹配换行符在内的所有字符。
    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第5张图片

    多行模式
    ^$的匹配规则,默认模式下,他俩匹配整个字符串的开始和结束位置。多行模式下,他俩匹配字符串内部某一行的开始和结束位置。
    正则表达式常用工具、字符组、量词、括号分组、断言环视、匹配模式_第6张图片

    参考

    PHP模式修正符

    你可能感兴趣的:(编译原理)