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