正则表达式的使用

正则表达式(Regular Expression)是一种用于匹配和操作字符串的强大工具。它是由一系列字符和特殊字符组成的模式,用于描述和匹配字符串中的文本模式。以下是一些正则表达式中常用的特殊字符和语法:

​1. 字符匹配:

 - 普通字符:用于匹配与其自身相等的字符(例如,字母、数字、标点符号等)。

 - 元字符(特殊字符):具有特殊含义的字符,如 `.` 表示匹配任意字符,`\d` 表示匹配数字等。

2. 量词:

   - `*`:匹配前面的模式零次或多次。

   - `+`:匹配前面的模式一次或多次。

   - `?`:匹配前面的模式零次或一次。

   - `{n}`:匹配前面的模式恰好 n 次。

   - `{n,}`:匹配前面的模式至少 n 次。

   - `{n,m}`:匹配前面的模式至少 n 次,但不超过 m 次。

3. 字符类:

   - `[abc]`:匹配字符 a、b 或 c 中的任意一个。

   - `[^abc]`:匹配除了字符 a、b 和 c 之外的任意字符。

   - `[0-9]`:匹配任意数字。

4. 边界匹配:

   - `^`:匹配字符串的开始位置。

   - `$`:匹配字符串的结束位置。

   - `\b`:匹配单词的边界。

5. 分组和捕获:

   - `(...)`:将模式组合为一个单元,可以对其进行分组和捕获。

   - `(?:...)`:将模式组合为一个非捕获组,不进行捕获。

6. 预查(Lookahead/Lookbehind):

   - `(?=...)`:正向预查,用于匹配位于某个位置右侧的内容。

   - `(?<=...)`:反向预查,用于匹配位于某个位置左侧的内容。

   - `(?!...)`:负向正向预查,用于匹配不位于某个位置右侧的内容。

   - `(?<!...)`:负向反向预查,用于匹配不位于某个位置左侧的内容。

1.  ?=:匹配其后有符合括号内表达式的内容

举例:

       str='helloWorld'

       regex='hello(?=World)'

       re.findall(regex,str)

​输出:

        hello

2.​?<=​:匹配其前有符合括号内表达式的内容

​举例:

       str='helloWorld'

       regex='(?<=hello)World'
    ​   re.findall(regex,str)

​输出:

        World

3.​?: 带上括号里面的

    ​  

      ​str='helloWorld'

      regex='(?:hello)World'
      re.findall(regex,str)

​输出:

       helloWorld

4.​?<​!匹配其前没有符合括号内表达式的内容

    ​  str='helloworld'

    ​  regex='(?<!Hello)World'

    ​  re.findall(regex,str)

​输出:

    ​  World

5.?!   匹配其后没有符合括号内表达式的内容

      str='helloWorld'

    ​  regex='hello(?!world)'

    ​  re.findall(regex,str)

​输出:

    ​  hello

正则表达式(Regular Expression)是一种用于匹配和操作字符串的强大工具。它是由一系列字符和特殊字符组成的模式,用于描述和匹配字符串中的文本模式。以下是一些正则表达式中常用的特殊字符和语法:

​1. 字符匹配:

 - 普通字符:用于匹配与其自身相等的字符(例如,字母、数字、标点符号等)。

 - 元字符(特殊字符):具有特殊含义的字符,如 `.` 表示匹配任意字符,`\d` 表示匹配数字等。

2. 量词:

   - `*`:匹配前面的模式零次或多次。

   - `+`:匹配前面的模式一次或多次。

   - `?`:匹配前面的模式零次或一次。

   - `{n}`:匹配前面的模式恰好 n 次。

   - `{n,}`:匹配前面的模式至少 n 次。

   - `{n,m}`:匹配前面的模式至少 n 次,但不超过 m 次。

3. 字符类:

   - `[abc]`:匹配字符 a、b 或 c 中的任意一个。

   - `[^abc]`:匹配除了字符 a、b 和 c 之外的任意字符。

   - `[0-9]`:匹配任意数字。

4. 边界匹配:

   - `^`:匹配字符串的开始位置。

   - `$`:匹配字符串的结束位置。

   - `\b`:匹配单词的边界。

5. 分组和捕获:

   - `(...)`:将模式组合为一个单元,可以对其进行分组和捕获。

   - `(?:...)`:将模式组合为一个非捕获组,不进行捕获。

6. 预查(Lookahead/Lookbehind):

   - `(?=...)`:正向预查,用于匹配位于某个位置右侧的内容。

   - `(?<=...)`:反向预查,用于匹配位于某个位置左侧的内容。

   - `(?!...)`:负向正向预查,用于匹配不位于某个位置右侧的内容。

   - `(?<!...)`:负向反向预查,用于匹配不位于某个位置左侧的内容。

1.  ?=:匹配其后有符合括号内表达式的内容

举例:

       str='helloWorld'

       regex='hello(?=World)'

       re.findall(regex,str)

​输出:

        hello

2.​?<=​:匹配其前有符合括号内表达式的内容

​举例:

       str='helloWorld'

       regex='(?<=hello)World'
    ​   re.findall(regex,str)

​输出:

        World

3.​?: 带上括号里面的

    ​  

      ​str='helloWorld'

      regex='(?:hello)World'
      re.findall(regex,str)

​输出:

       helloWorld

4.​?<​!匹配其前没有符合括号内表达式的内容

    ​  str='helloworld'

    ​  regex='(?<!Hello)World'

    ​  re.findall(regex,str)

​输出:

    ​  World

5.?!   匹配其后没有符合括号内表达式的内容

      str='helloWorld'

    ​  regex='hello(?!world)'

    ​  re.findall(regex,str)

​输出:

    ​  hello

正则表达式(Regular Expression)是一种用于匹配和操作字符串的强大工具。它是由一系列字符和特殊字符组成的模式,用于描述和匹配字符串中的文本模式。以下是一些正则表达式中常用的特殊字符和语法:

​1. 字符匹配:

 - 普通字符:用于匹配与其自身相等的字符(例如,字母、数字、标点符号等)。

 - 元字符(特殊字符):具有特殊含义的字符,如 `.` 表示匹配任意字符,`\d` 表示匹配数字等。

2. 量词:

   - `*`:匹配前面的模式零次或多次。

   - `+`:匹配前面的模式一次或多次。

   - `?`:匹配前面的模式零次或一次。

   - `{n}`:匹配前面的模式恰好 n 次。

   - `{n,}`:匹配前面的模式至少 n 次。

   - `{n,m}`:匹配前面的模式至少 n 次,但不超过 m 次。

3. 字符类:

   - `[abc]`:匹配字符 a、b 或 c 中的任意一个。

   - `[^abc]`:匹配除了字符 a、b 和 c 之外的任意字符。

   - `[0-9]`:匹配任意数字。

4. 边界匹配:

   - `^`:匹配字符串的开始位置。

   - `$`:匹配字符串的结束位置。

   - `\b`:匹配单词的边界。

5. 分组和捕获:

   - `(...)`:将模式组合为一个单元,可以对其进行分组和捕获。

   - `(?:...)`:将模式组合为一个非捕获组,不进行捕获。

6. 预查(Lookahead/Lookbehind):

   - `(?=...)`:正向预查,用于匹配位于某个位置右侧的内容。

   - `(?<=...)`:反向预查,用于匹配位于某个位置左侧的内容。

   - `(?!...)`:负向正向预查,用于匹配不位于某个位置右侧的内容。

   - `(?<!...)`:负向反向预查,用于匹配不位于某个位置左侧的内容。

1.  ?=:匹配其后有符合括号内表达式的内容

举例:

       str='helloWorld'

       regex='hello(?=World)'

       re.findall(regex,str)

​输出:

        hello

2.​?<=​:匹配其前有符合括号内表达式的内容

​举例:

       str='helloWorld'

       regex='(?<=hello)World'
    ​   re.findall(regex,str)

​输出:

        World

3.​?: 带上括号里面的

    ​  

      ​str='helloWorld'

      regex='(?:hello)World'
      re.findall(regex,str)

​输出:

       helloWorld

4.​?<​!匹配其前没有符合括号内表达式的内容

    ​  str='helloworld'

    ​  regex='(?<!Hello)World'

    ​  re.findall(regex,str)

​输出:

    ​  World

5.?!   匹配其后没有符合括号内表达式的内容

      str='helloWorld'

    ​  regex='hello(?!world)'

    ​  re.findall(regex,str)

​输出:

    ​  hello

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值