pattern = r'(\S+)\s*(![;])/\s*(\S+)'
regex = re.compile(pattern,re.DOTALL)
for result in regex.findall(data):
f.write("Division" + str(result)+ "\n\n\n")
我正在使用以下表达式来捕获何时发生除法但是当除法符号前面有“;”时要忽略。这个正则表达式无法正常工作
我怎样才能让它发挥作用?
答案 0 :(得分:1)
使用negative look-behind assertion:
pattern = r'(\S+)\s*(?<!;)/\s*(\S+)'
(?<!;)/
前面没有/
时,/
才会与;
匹配
>>> re.findall(r'(\S+)\s*(?<!;)/\s*(\S+)', '1/2 and 1;/4 12 / 6')
[('1', '2'), ('12', '6')]