【发布时间】:2016-03-27 08:45:15
【问题描述】:
我尝试匹配包含字母“ab”或“ba”的单词,例如“ab”olition,f“ab”rics,pro“ba”ble。我想出了以下正则表达式:
r"[Aa](?=[Bb])[Bb]|[Bb](?=[Aa])[Aa]"
但它包括以“、(、)、/ ....非字母数字字符开头或结尾的单词。我怎样才能删除它?我只想匹配单词列表。
import sys
import re
word=[]
dict={}
f = open('C:/Python27/brown_half.txt', 'rU')
w = open('C:/Python27/brown_halfout.txt', 'w')
data = f.read()
word = data.split() # word is list
f.close()
for num2 in word:
match2 = re.findall("\w*(ab|ba)\w*", num2)
if match2:
dict[num2] = (dict[num2] + 1) if num2 in dict.keys() else 1
for key2 in sorted(dict.iterkeys()):print "%s: %s" % (key2, dict[key2])
print len(dict.keys())
在这里,我不知道如何将它与第一条评论所说的“re.compile~~”方法混为一谈......
【问题讨论】:
-
教师应该停止说正则表达式是人类已知问题的解决方案......
-
@KemyLand:这应该是公认的答案:)