学习正则表达式笔记
学习正则表达式笔记(二),学习正则表达式笔记
正则匹配的各种模式
正则匹配的各种模式
1.择一匹配(|)
择一匹配用管道符号(|),也就是竖线表示。代表可以从多个模式中选择一个,可用于分割正则表达式。例如:
ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。
1.择一匹配(|)
择一匹配用管道符号(|),也就是竖线表示。代表可以从多个模式中选择一个,可用于分割正则表达式。例如:
ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。
2.匹配任意单个字符
- 点号(.)可以匹配除换行符 n
以外的任意字符,无论是空格,字母,数字,可打印字符、不可打印字符,还是一个符号,使用点号都能够匹配它们。 - 在Python中,如果使用模块属性re.S
也就是 re.DOTALL,那么换行符 n 也可以匹配了。
2.匹配任意单个字符
3.从字符串起始或者结尾或者单词边界匹配
- 要匹配字符串的开始位置,可以使用脱字符(^)或者特殊字符
A 。例如:^start,匹配从start开始。 - 要匹配字符串的结束位置,可以使用美元符号($)或者
Z 。例如:end$,匹配以end结束。 - 特殊字符b 和B
可以用来匹配字符边界。区别在于b
用于匹配一个单词的边界,即如果一个模式必须位于单词的起始部分,就不管该单词前面是否有任何字符。同样,B
将匹配出现在一个单词中间的模式。
例如:
- bthe,匹配以
the开头的字符串。 - btheb,仅仅匹配单词
the。 - Bthe, 任何包含但并不以 the
作为起始的字符串
3.从字符串起始或者结尾或者单词边界匹配
例如:
- bthe,匹配以 the开头的字符串。
- btheb,仅仅匹配单词 the。
- Bthe, 任何包含但并不以 the 作为起始的字符串
4.字符集
使用方括号表示字符集,可以匹配字符集中的任意符号。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。
4.字符集
使用方括号表示字符集,可以匹配字符集中的任意符号。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。
5.限定范围和否定
- 使用 –
连接字符,表示匹配两个字符之间的任意字符。例如:
1-9,A-Z,分别用于表示数值数字、大写字母。 - 在方括号中的字符前加
^,表示否定,不匹配 ^
之后的字符,例如:[^aeiou],表示一个非元音字符。
5.限定范围和否定
6.特殊符号*、+和?
1. 星号操作符(*)将匹配其左边的正则表达式
出现零次或者多次的情况。
2.加
号(+)操作符将匹配一次或者多次出现的正则表达式。
3.问号(?)
操作符将匹配零次或者一次出现的正则表达式。也叫做非贪婪匹配。
6.特殊符号*、+和?
7. 使用圆括号指定分组
一对圆括号可以实现以下任意一个(或者两个)功能:1.对正则表达式进行分组;2.匹配子组。
7. 使用圆括号指定分组
一对圆括号可以实现以下任意一个(或者两个)功能:1.对正则表达式进行分组;2.匹配子组。
8.扩展表示法
扩展表示法时以问号开始(?…)的。通常用于在判断匹配之前提供标记,实现一个前视(或者后视)匹配,或者条件检查。尽管圆括号使用这些符号,但是只有(?P<name>)表述一个分组匹配。所有其他的都没有创建一个分组。
正则表达式模式
匹配的字符串
(?:w+.)*
以句点作为结尾的字符串,例如“google.”、“ twitter.”、“
facebook.”,但是这些匹配不会保存下来 供后续的使用和数据检索。
(?#comment)
此处并不做匹配,只是作为注释。
(?=.com)
如果一个字符串后面跟着“.com”才做匹配操作,并不使用任何目标字符串。
(?!.net)
如果一个字符串后面不是跟着“.net”才做匹配操作。
(?<=800-)
如果字符串之前为“800-”才做匹配,假定为电话号码,同样,并不使用任何输入字符串。
(?<!192.168.)
如果一个字符串之前不是“192.168.”才做匹配操作,假定用于过滤掉一组 C 类 IP
地址。
(?(1)y|x) 如果一个匹配组
1(1)存在,就与 y匹配;否则,就与 x 匹配。
8.扩展表示法
扩展表示法时以问号开始(?…)的。通常用于在判断匹配之前提供标记,实现一个前视(或者后视)匹配,或者条件检查。尽管圆括号使用这些符号,但是只有(?P<name>)表述一个
分组匹配。所有其他的都没有创建一个分组。
正则表达式模式 匹配的字符串
(?:w+.)* 以句点作为结尾的字符串,例如“google.”、“
twitter.”、“ facebook.”,但是这些匹配不会保存下来
供后续的使用和数据检索。
(?#comment) 此处并不做匹配,只是作为注释。
(?=.com)
如果一个字符串后面跟着“.com”才做匹配操作,并不使用任何目标字符串。
(?!.net) 如果一个字符串后面不是跟着“.net”才做匹配操作。
(?<=800-)
如果字符串之前为“800-”才做匹配,假定为电话号码,同样,并不使用任何输入字符串。
(?<!192.168.)
如果一个字符串之前不是“192.168.”才做匹配操作,假定用于过滤掉一组 C 类 IP
地址。
(?(1)y|x) 如果一个匹配组 1(1)存在,就与
y匹配;否则,就与 x 匹配。
正则匹配的各种模式 1.择一匹配(|)
择一匹配用管道符号(|),也就是竖线表示。代表…