Python正则 内联标记

在Python的正则表达式中,内联标记是一种在正则表达式中指定标志的方式,它可以在表达式本身中指定标志,而不是作为参数传递给re模块的函数。

内联标记在正则表达式模式的开头或结束处使用语法 (?...),其中 ... 是一个或多个标记字符。

下面是一些常用的内联标记及其用法:

  • (?i): 忽略大小写匹配。例如,(?i)hello 将会匹配 "hello"、"Hello" 和 "HELLO"。

  • (?m): 多行模式,使 ^$ 分别匹配每一行的开头和结尾。例如,(?m)^hello 将会匹配以 "hello" 开头的每一行。

  • (?s): 单行模式,使 . 匹配包括换行符在内的任意字符。例如,(?s)hello.world 将会匹配 "hello world"。

  • (?x): 启用详细模式,可以在正则表达式中使用空格和注释。这样可以增加正则表达式的可读性。例如,(?x)hello\sworld 将会匹配 "hello world"。

  • (?u): 使用 Unicode 匹配。通常情况下,默认情况下正则表达式是使用Unicode 进行匹配的,但使用 (?a) 可以启用 ASCII 模式。

  • (?a): 使用 ASCII 匹配

在Python中,默认情况下正则表达式是使用Unicode进行匹配的。这意味着正则表达式中的字符类(如\w\d\s等)将与Unicode字符集匹配,而不仅仅是ASCII字符集。此默认行为可以通过使用内联标记来改变。

如果需要使用ASCII进行匹配,可以在正则表达式的开头加上(?a)或者使用re.ASCII标志。

这样,正则表达式将只匹配ASCII字符。

例如,(?a)hello或者re.compile('hello', re.ASCII)将只匹配ASCII字符中的"hello"。

需要注意的是,ASCII模式下,\w\d\s等字符类只匹配ASCII字符的对应类别,而不包括Unicode字符。

这些内联标记可以单独使用,也可以组合使用。例如,(?im)hello 可以同时启用忽略大小写和多行模式。

 

需要注意的是,内联标记只适用于当前的正则表达式,不会影响全局的 re 模块设置。

前面提到了re.IGNORECASE模式,忽略大小写。但是只想在某个地方使用忽略,而不在其他地方忽略呢?就可以用到内联标记。

用法示例:(?i:正则表达式)

看到这里,你应该已经理解了,内联标记实际就是匹配模式的部分范围生效。

① re.IGNORECASE 与 (?i:) 忽略大小写

② re.MULTILINE 与 (?m:) '^'和'$'的跨行限制开头结尾。

③ re.DOTALL 与 (?s:) 让 '.' 支持换行符的匹配。

④ re.VERBOSE 与 (?x:) 支持注释

⑤ re.ASCII 与 (?a:) 让 \w, \W, \b, \B, \d, \D, \s 和 \S 只匹配ASCII

 

补充说明:

多种标记方式:(?im: ) , im 可以换成任何你想要加的属性,只要不冲突就行。

比如:(?is:正则表达式)

 

排除标记方式:

比如flasg属性中,已经指定了忽略大小写,但是在某个地方一定不能忽略大小写,那么我们就可以设置排除标记方式。

(?-im: ) im 可以换成任何你想要加的属性。? 后面的 - 就是排除flasg属性的意思。

另外,还支持这种方式:(?ms-i:正则表达式 )

 

正则表达式在线测试工具
人工服务

正则表达式付费代写、咨询、答疑解惑,专业、快速、高效帮您解决正则表达式方面的各种问题,可定制各类软件应用程序。

联系客服
正则表达式基础语法
. - 除换行符以外的所有字符。
^ - 字符串开头。
$ - 字符串结尾。
\d,\w,\s - 匹配数字、字符、空格。
\D,\W,\S - 匹配非数字、非字符、非空格。
[abc] - 匹配 a、b 或 c 中的一个字母。
[a-z] - 匹配 a 到 z 中的一个字母。
[^abc] - 匹配除了 a、b 或 c 中的其他字母。
aa|bb - 匹配 aa 或 bb。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
{n} - 匹配 n次。
{n,} - 匹配 n次以上。
{m,n} - 最少 m 次,最多 n 次匹配。
(expr) - 捕获 expr 子模式,以 \1 使用它。
(?:expr) - 忽略捕获的子模式。
(?=expr) - 正向预查模式 expr
(?!expr) - 负向预查模式 expr

在线客服QQ:543690914,备案号: 苏ICP备15037649号-32。东海县白塔埠镇佳诚电脑经营部版权所有。