如何在正则表达式或python中匹配.log而不是.log*?
我在正则表达式方面有困难 我有:如何在正则表达式或python中匹配.log而不是.log*?,python,regex,string-matching,Python,Regex,String Matching,我在正则表达式方面有困难 我有: urls = re.findall(r'href=[\'"]?([^\'" >]+)', line) print urls 这给了我: ['production_r1499.log'] ['production_r1499.log-20140323'] ['production_r1499.log-20140323.gz'] 我只对.log文件感兴趣。如何使正则表达式仅与此正则表达式匹配 或者。 是否可以采用类似于此工作的方法 if str(urls)
urls = re.findall(r'href=[\'"]?([^\'" >]+)', line)
print urls
这给了我:
['production_r1499.log']
['production_r1499.log-20140323']
['production_r1499.log-20140323.gz']
我只对.log文件感兴趣。如何使正则表达式仅与此正则表达式匹配
或者。
是否可以采用类似于此工作的方法
if str(urls).endswith('.log'):
非常高兴并感谢您的建议 试试这个
urls = re.findall(r'href=[\'"]?([^\'" >]+\.log)', line)
严格来说,这应该定位到href属性的末尾。如果您担心误报,可以在结束引号之前添加类似于
[\'”>]
的内容。使用“向前看”来查看是否有任何“
,”
,
,
或空格
在您的比赛中.log
之后
urls = re.findall(r'href=[\'"]?([^\'" >]+\.log)(?=[\'"> ])', line)
line
变量的值是多少?它是html字符串吗?如果看不到输入,很难说看到输入字符串,但是您是否尝试过使用$
,这是一个与字符串结尾匹配的锚点?(?!['])[\w]+(日志)(?lookahead不会在匹配结束分隔符的基础上添加任何内容。@tripleee如果我不放置lookahead,则正则表达式将选择x.log
以及x.log.201
。但是OP只想选择x.log
,而忽略在.log
后面有文本的其他对象。log
是,但A(b)(?:=c)
写得更好a(b)如果你想要的只是捕获的表达式。使用前面的代码< C> > >代码>只是晦涩的。@ TrPielee得到了你的意思。是的,你是对的。LOL,现在我开始思考为什么我使用了前瞻性:-谢谢你的回复!这很管用,但是我也明白我可以不看前面。请考虑。谢谢。