所以基本上我想匹配行中间的com-222,但是如果前面有.,我不想匹配它,例如,如果行是5545com-222,正则表达式应该返回com-222,但是如果行是5545.com-222,那么它不应该匹配。
下面的正则表达式适用于我想匹配的所有情况。\w{2,5}-\d{3}
但是现在我想修改它来忽略一个特定的情况,如果在它之前有一个.,正则表达式就不再匹配了。
我的职责是:
import re, os, sys, shutil
def getCode(file):
codeRegex = re.compile(r'\w{2,5}-\d{3}', re.IGNORECASE)
if codeRegex.search(str(file)) != None:
mo = codeRegex.search(str(file))
theCode = mo.group()
return theCode
return False
我试过:[^\.]\w{2,5}-\d{3}
我试过了:[^.]\w{2,5}-\d{3}
它不起作用,回报不再正确。
1条答案
按热度按时间lmyy7pcs1#
谢谢你的帮助,我发现正则表达式似乎工作的两种情况:
(?〈!.)[a-z]{3,5}-\d{3}
https://regex101.com/r/LkcGs4/1