在python中向后搜索?

时间:2017-09-01 15:47:19

标签: python regex

我的列表中包含以下行:

=cat-egory/packagename-version

所以我必须把它分成3个不同的变量,比如

category = cat-egory
package_name = packagename
package_version = version

我必须避免 =/ 字符

我喜欢perl所以我曾经写过一个正则表达式:

(?<==)\w+.\w+

会给我cat-egory而不带前导=字符

依此类推,但据我所知?<=在python中不起作用,我该如何提取数据?

3 个答案:

答案 0 :(得分:1)

似乎运作良好。请参阅:https://regex101.com/r/nnMRKd/2

答案 1 :(得分:0)

你甚至可以更进一步使用元组解包:

import re

string = "=cat-egory/packagename-version"

rx = re.compile(r'(?<==)([^/]+)/([^-]+)-(.+)')

for match in rx.finditer(string):
    category, package_name, version = match.groups()
    print(category)
    # cat-egory

答案 2 :(得分:0)

似乎工作正常,也许你只是缺少用于捕获的基本Python框架:

import re

text = "=cat-egory/packagename-version"
results = re.search("(?<==)\w+.\w+", text)
if results:
    print (results.group(0))

输出:

cat-egory

确保使用.search而不是.match,如评论所示。 .group是你如何引用你所捕获的内容而不是perl中的$ 1。没有什么太花哨的了:))