亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 請教正則匹配的問題 [打印本頁]

作者: apzc2529    時間: 2009-11-22 14:31
標(biāo)題: 請教正則匹配的問題
我想匹配^ *83[3-9],^ *8[4-9]\d,^ *9\d\d三個表達(dá)式,應(yīng)該怎么寫?謝謝!

我寫的代碼如下,不過結(jié)果不對,只匹配了833。
  1. f=open('datafile')
  2. data=f.readlines()
  3. import re
  4. p=re.compile('^ *(?:83[3-9]|8[4-9]\d|9\d\d)')
  5. for i in data:
  6.     if p.search(i):
  7.          print i
復(fù)制代碼

作者: starwing83    時間: 2009-11-22 14:42
>>> with open('test.txt', 'w') as f:
...     f.write('833\n944\n823\n844\n')
...
>>> import re
>>> p = re.compile(r'^\s*(?:83[3-9]|8[4-9]\d|9\d\d)', re.M)
>>> with open('test.txt', 'r') as f:
...     for line in f:
...             print p.search(line)
...
<_sre.SRE_Match object at 0x012E0790>
<_sre.SRE_Match object at 0x012E0790>
None
<_sre.SRE_Match object at 0x012E0790>
作者: apzc2529    時間: 2009-11-22 14:51
標(biāo)題: 回復(fù) #2 starwing83 的帖子
謝謝!解決了。剛才看了一下,原來是我讀入的文件有問題。
另外問一個問題,如果我匹配后,想進(jìn)行替換

如匹配上了I,我想將其替換為 I-832,應(yīng)該怎么做。

[ 本帖最后由 apzc2529 于 2009-11-22 14:55 編輯 ]
作者: zfzaizheli    時間: 2009-11-26 10:11
>>> re1 = re.compile(r'I')
>>> text='IdefdswIfdswe'
>>> list = re1.findall(text)
>>> str =  text.replace(list[0],'I-832')
>>> str
'I-832defdswI-832fdswe'
作者: bohemia    時間: 2009-11-26 16:57
原帖由 apzc2529 于 2009-11-22 14:51 發(fā)表
謝謝!解決了。剛才看了一下,原來是我讀入的文件有問題。
另外問一個問題,如果我匹配后,想進(jìn)行替換

如匹配上了I,我想將其替換為 I-832,應(yīng)該怎么做。


也可以用sub方法。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2