Python 正则表达式 ... 符号
- 正文
- 示例1------ ... 字符
- 示例2
- 示例3
- 示例4
- 示例5
正文
(...)
用来匹配括号内的任意正则表达式。
之前我们已经介绍过了 .
符号在正则表达式中的用法,其用来匹配除了 \n
字符以外的单个字符。那么对于 ...
,显然它可以匹配除了 \n 字符以外的任意三个字符的组合。
示例1------ … 字符
import restr1 = 'abc(def)opq'
print(re.search('...', str1))
"""
result:
<re.Match object; span=(0, 3), match='abc'>
"""
显然,匹配到的是开头的三个字符 abc
。
示例2
接下来,我们研究一下 (...)
字符的含义。
import restr1 = 'abc(def)opq'
print(re.search('(...)', str1))
"""
result:
<re.Match object; span=(0, 3), match='abc'>
"""
很明显,也匹配到了开头的三个字符 abc
。
示例3
import restr1 = 'abc(def)opq'
print(re.search('\(...\)', str1))
str1 = 'abc(defg)opq'
print(re.search('\(...\)', str1))
"""
result:
<re.Match object; span=(3, 8), match='(def)'>
None
"""
当我们给 ()
均加上转义符号 \
时,就会配到 (def)
字符串。但是 ()
中的字符串数量从三个到四个时,就匹配不到任何结果了,因为 ...
只匹配三个字符。 但是一旦我们加上了转义符号 \
,\(...\)
的含义就不再是 (...)
了,这里仅仅是为了说明这个事情。读者务必需要注意。
示例4
我们回归到原本的 (...)
符号。
import restr1 = 'abc(def)opq'
print(re.search('abc(...)', str1))
"""
result:
<re.Match object; span=(0, 6), match='abc(de'>
"""
此时,匹配到了字符串 abc(de
,因为当匹配的时候我们开头有了 abc
三个字符,根据示例 2
中的结果,(...)
会匹配到后面的三个字符。因此匹配到了 (de
,最终将二者的组合字符串 abc(de
作为结果进行了输出。
示例5
我们这里做一个延申,如果要匹配到上述整个字符串该怎么办呢?我们只需要将括号中的 ...
变成 .....
。
import restr1 = 'abc(def)opq'
print(re.search('abc(.....)opq', str1))
"""
result:
<re.Match object; span=(0, 11), match='abc(def)opq'>
"""
对比上述所有示例,我们可以看到,对于 (...)
形式,()
实际上并没有意义,只是表示使用 ()
中的 ...
符号进行匹配。
有些小伙伴可能会问,那既然没有意义,为什么还需要使用 ()
呢?因为,如果你不是用 (...)
而直接使用 ...
,Python
就会将你的匹配对象视作 ...
符号,而不是把 ...
符号看作是除了 \n
字符以外的任意符号。
如果大家觉得有用,就请点个赞吧~