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