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