Python RegEx问题

Dan*_*Dan 1 python regex

我不确定为什么这不起作用:

import re
import csv

def check(q, s):
  match = re.search(r'%s' % q, s, re.IGNORECASE)
  if match:
    return True
  else:
    return False

tstr = []

# test strings
tstr.append('testthisisnotworking')
tstr.append('This is a TEsT')
tstr.append('This is a    TEST    mon!')

f = open('testwords.txt', 'rU')
reader = csv.reader(f)
for type, term, exp in reader:
  for i in range(2):
    if check(exp, tstr[i]):
      print exp + " hit on " + tstr[i]
    else:
      print exp + " did NOT hit on " + tstr[i]
f.close()
Run Code Online (Sandbox Code Playgroud)

testwords.txt包含以下行:

blah, blah, test
Run Code Online (Sandbox Code Playgroud)

所以基本上"测试"是RegEx模式.没有什么复杂的,只是一个简单的词.这是输出:

test did NOT hit on testthisisnotworking
test hit on This is a TEsT
test hit on This is a    TEST    mon!
Run Code Online (Sandbox Code Playgroud)

为什么它没有击中第一个弦?我也试过\s*test\s*没有运气.救命?

Gre*_*ill 6

csv默认情况下,模块会在输入中的单词周围返回空格(这可以通过使用不同的"方言"来更改).所以exp包含" test"一个领先的空间.

解决这个问题的一种快速方法是添加:

exp = exp.strip()
Run Code Online (Sandbox Code Playgroud)

从CSV文件中读取后.