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']