我的列表中包含以下行:
=cat-egory/packagename-version
所以我必须把它分成3个不同的变量,比如
category = cat-egory
package_name = packagename
package_version = version
我必须避免
=
和/
字符
我喜欢perl所以我曾经写过一个正则表达式:
(?<==)\w+.\w+
会给我cat-egory
而不带前导=
字符
依此类推,但据我所知?<=
在python中不起作用,我该如何提取数据?
答案 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。没有什么太花哨的了:))