[英]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.