Python正则表达式x*与x?的区别


Python正则表达式符号与方法:

且单字符的x?和x*能找出换行符号,而x则不能.

程序如下:

import re
#. 匹配任意字符,换行符\n除外
#. 可以看成一个占位符,几个.占几个位置
#特别的,0个.就占0个位置
a='xxyxz'
print('对{0}进行查找\n'.format(a))

b=re.findall('x*',a)
print('用x*进行查找的结果{0}'.format(b))

b=re.findall('x?',a)
print('用x?进行查找的结果{0}'.format(b))

b=re.findall('x',a)
print('用x进行查找的结果{0}'.format(b))

b=re.findall('x.',a)
print('用x.进行查找的结果{0}'.format(b))

结果如下:

对xxyxz进行查找

用x*进行查找的结果['xx', '', 'x', '', '']
用x?进行查找的结果['x', 'x', '', 'x', '', '']
用x进行查找的结果['x', 'x', 'x']
用x.进行查找的结果['xx', 'xz']

 

补充:

以下结论由几次试验得出,还未证实.

特别的,对于xy*和xy?末尾多一个字符的字符串去查找会查找出来不含末尾字符的项,而用多两个的字符串则查找不出来任何项. 而xx则不然. 

特别的,当用连续相同字符查找时,xx*查找结果会找到后面的所有直接相连x, 而xx?则不然.

程序如下:

 1 import re
 2 a='xxxxyzxyzxys'
 3 print('对{0}进行查找'.format(a))
 4 b=re.findall('xyz*',a)
 5 print('用xyz*进行查找的结果{0}'.format(b))
 6 
 7 b=re.findall('xyz?',a)
 8 print('用xyz?进行查找的结果{0}'.format(b))
 9 
10 b=re.findall('xx*',a)
11 print('用xx*进行查找的结果{0}'.format(b))
12 
13 b=re.findall('xx?',a)
14 print('用xx?进行查找的结果{0}'.format(b))

输出如下:

对xxxxyzxyzxys进行查找
用xyz*进行查找的结果['xyz', 'xyz', 'xy']
用xyz?进行查找的结果['xyz', 'xyz', 'xy']
用xx*进行查找的结果['xxxx', 'x', 'x']
用xx?进行查找的结果['xx', 'xx', 'x', 'x']


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM