繁体   English   中英

如何在Python中创建正则表达式?

[英]How can I create a regular expression in Python?

我正在尝试创建正则表达式以从文本文件中过滤某些文本。 我要过滤的内容具有以下格式:

word_*_word.word

因此,例如,我希望每次匹配都使用python代码。 示例结果将是:

program1_0.0-1_log.build
program2_0.1-3_log.build

我怎样才能做到这一点?

非常感谢你的帮助

尝试这样的事情:

r'[a-zA-Z0-9]+_[^_]+_[a-zA-Z0-9]+\.[a-zA-Z0-9]+'

看起来您想使用诸如r'\\w+_.*_\\w+\\.\\w+' -假设*确实代表“零个或多个完全任意字符”(如果不是,则中间的.*部分需要相应更改)。 一旦有了正确的模式(完全取决于该*含义),您就可以重新re.compile它以获得正则表达式对象,并使用RE对象的.findall方法,并将整体字符串用作参数,以获取与该模式匹配的所有非重叠子字符串的列表(如果您想一次获取一个这样的子字符串,并将它们循环,则还有其他选择,例如.finditer )。

Python的正则表达式模块称为re 您需要导入它并使用提供的功能

import re
if re.match(r'\w+_.*_\w+.\w+', "some_text_abc.x"):
   print "yeah."

在正则表达式字符串前加上r很有用,这样它就可以按字面意义进行解释,而无需对转义符进行特殊处理。 否则,反斜杠将由python解释器特别处理,并且需要转义作为正则表达式一部分的反斜杠。

尝试使用^\\w+_.*_\\w+\\.\\w+$

我不明白为什么您这里需要正则表达式。 如果您想要的字符串以“ .build”结尾,则可以执行此操作

s="blah blah program1_0.0-1_log.build blah blah"    
for item in s.split():
    if item.endswith(".build"):
        print item

就是这样。 如果您想进一步检查,则

for item in s.split():
    if item.endswith(".build"):
        s = item.split("_")
        if len(s) != 3:
           print "not enough _"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM