正则入门及案例

一、概述

1.正则表达式究竟是什么

正则表达式是一种强大的文本匹配工具,可以用于在文本中查找特定的模式。

2.使用正则有什么好处

这可以帮助我们快速了解为什么我们写的正则表达式不符合最初的期望。当需要编写更复杂的正则表达式时,这将为我们节省大量的猜测时间和不必要的麻烦。

3.普通正则表达式和Perl型正则表达式区别

普通的正则表达式通常是指在其他编程语言或工具中使用的正则表达式。它们可能没有Perl正则表达式那么丰富的语法和功能,也没有相应的内置函数和操作符。

 

二、正则基本符号

.

匹配任意一个字符,除了换行符。

\d

匹配任意一个数字字符,等价于[0-9]。

\D

匹配除数字字符之外的任意字符,等价于[^0-9]。

\w

匹配任意一个字母、数字或下划线字符,等价于[A-Za-z0-9_]。

\W

匹配除字母、数字和下划线字符之外的任意字符,等价于[^A-Za-z0-9_]。

\s

匹配任意一个空白字符,包括空格、制表符、换行符等。

\S

匹配除空白字符之外的任意字符。

\b

匹配单词边界,即单词字符和非单词字符的交界处。

\B

匹配非单词边界。

*

匹配前面的字符0次或多次。

+

匹配前面的字符1次或多次。

?

匹配前面的字符0次或1次。

|

将两个匹配逻辑进行或运算。

{n}

匹配前面的字符n次。

{n,}

匹配前面的字符至少n次。

{n,m}

匹配前面的字符至少n次,但不超过m次。

[abc]

匹配字符集中的任意一个字符。

[^abc]

匹配除字符集中的字符之外的任意字符。

^

匹配字符串的开头。

$

匹配字符串的结尾。

()

分组,将括号内的一组字符看作一个整体。

/

常用分隔符,用于标记正则表达式的开头和结尾。

\

转义字符,使用\将有特殊作用的字符(元字符、分隔符等)转义为普通字符。

 

 三、简单案例&通用

#匹配中文
([\u4e00-\u9fa5])+
#匹配:0到10000的数字
([0-9]{1,4}|10000)$
#匹配手机号码
0?(13|14|15|17|18|19)[0-9]{9}
#匹配日期格式
\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}
#匹配ip地址
(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
#匹配不连续包含abc的数据
\b((?!abc)\w)+\b

 

 

四、json数据匹配案例

  案例json:

{
    "data":{
        "items":[
            {
                "cost":0,
                "CreateType":2,
                "SceneIds":[
                    1
                ],
                "AdxId":"这是一个测试按钮",
                "AccountIds":[
                    12004
                ],
                "Target":[

                ],
                "AccountNames":[
                    "烧鸡222"
                ]
            }
        ],
        "total":4,
        "amount":{
            "cpm":0,
            "impressions":0,
             "IsDeleted": false,
            "adx_metric_0":0
        },
        "page":1,
        "AdxId":"这是一个22222",
        "size":10
    },
    "uri":"v1/audienceTemplate/list",
    "debugTs":{
        "redisGetSwitchListIds":0,
        "dalan":{
            "name":"dalam_2019",
            "age":8,
            "msg":"大蓝游戏公司"
        },
        "total":49.615975999999996
    },
    "code":0,
    "rid":1329
}
View Code

1.简单匹配 

#以匹配以"total": "数字"的形式出现的字符串并提取数字部分,\s*:匹配零个或多个空白字符,([0-9]{2,}):匹配连续出现至少两个数字的部分
"total":\s*([0-9]{2,})    #匹配total下的所有整数 "total":\s*([0-9]+)

#匹配数字并包含小数,[0-9]{1,}匹配0到9最少一个数字, .表示任意一个字符,[0-9]+|[0-9]{2,}匹配一次或者2次及以上
"total":\s*([0-9]{1,}.[0-9]+|[0-9]{2,})

#匹配IsDeleted的值, \w{1,}任意一个字母或数字或下划线,匹配最少一次
"IsDeleted":\s*(\w{1,})

#匹配字段带双引号数据
"AdxId":\s*"(.*?)"

#匹配带有[]的数据(需要转义)
"AccountNames":\s*\[\s*"(.+?)"\s*\]


#匹配二级json
"debugTs":\s*{[^}]+},\s*"total":(\d+.\d+)\s*}

#匹配嵌套json
"dalan":\s*{([^}]*)}

 

 

 

相关连接:

https://www.json.cm/regex/  ..............................................................正则表达式在线测试工具

 

posted on 2023-08-11 09:48  chen_2987  阅读(61)  评论(0)    收藏  举报

导航