正则表达式(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