python - 正则表达式、多括号和方括号

标签 python regex python-3.x parentheses square-bracket

@avinash-raj 的回答:

re.findall(r'\([^\[\]()]*\[\([^\[\]()]+source=([\w./]+)', s)

修改后的问题:

我有以下字符串:

s=string='s=<a=1 b=[(text1 [(text2 source=x.gz i=i.gz)]), ([(text3 j=1.0 source=y.gz)])] c=[([(3)])] d=[([(source=x.gz)])]>'

我想得到这个列表作为输出:

['x.gz','y.gz']

原始问题:

我有以下字符串:

s=string='s=<a=1 b=[([(source=x.gz i=0)]), ([(j=1 source=y.gz)])] c=[([(3)])]>'

我想得到这个列表作为输出:

['x.gz','y.gz']

我试过这个:

re.findall(r'b=\[([^]]*)\]',s)

哪个返回:

['([(source=x.gz i=0)']

我也试过这个:

re.findall(r'\[([^]]*)\]',s)

哪个返回:

['([(source=x.gz i=0)', '(j=1 source=y.gz)', '([(3)']

我同样很高兴得到一行答案或被指向一个教程,这使我能够在完成它后自己找到答案。谢谢。

EDIT1:更改字符串(见下面的答案):

s=string='s=<a=1 b=[([(source=x.gz i=0)]), ([(j=1 source=y.gz)])] c=[([(3)])] source=4>'

EDIT2:更改字符串(未提供答案,但我会自己提供):

s=string='s=<a=1 b=[(text1 [(text2 source=x.gz i=i.gz)]), ([(text3 j=1.0 source=y.gz)])] c=[([(3)])] d=[([(source=x.gz)])]>'

我试过这个:

re.findall(r'(?<=b=)\[\(.*?[\S]*?source=([\w\./]+)', s)

但它只返回:

['x.gz']

最佳答案

使用capturing groups捕获要打印的字符。

>>> string = 's=<a=1 b=[([(source=x.gz i=0)]), ([(j=1 source=y.gz)])] c=[([(3)])] source=4>'
>>> re.findall(r'\(\[\([^\[\]()]*source=([\w.]+)', string)
['x.gz', 'y.gz']

解释:

  • \(\[\( 按字面意思匹配 ([( 个字符。
  • [^\[\]()]* 一个否定字符类,匹配任何字符但不匹配 []( or ) 零次或多次。
  • source= 匹配字符串 source=
  • ([\w.]+) 一次或多次捕获单词字符或点。

更新:

>>> string = 's=<a=1 b=[(text1 [(text2 source=x.gz i=i.gz)]), ([(text3 j=1.0 source=y.gz)])] c=[([(3)])] d=[([(source=x.gz)])]>'
>>> re.findall(r'\([^\[\]()]*\[\([^\[\]()]+source=([\w.]+)', string)
['x.gz', 'y.gz']

关于python - 正则表达式、多括号和方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562831/

相关文章:

regex - 如何在 Perl 中找到与正则表达式匹配的子字符串的索引位置?

python - Arrayfire python支持多GPU编程吗

python - 如何从python中的php文件中读取一个php数组

python - 将标准输入和参数传递给脚本

javascript - Javascript 中的正则表达式查找所有括号结构

c# - C# Regex 如何捕获 *| 之间的所有内容?和 |*?

Python 和 Julia 以不同的方式计算函数?

Python HTTPServer serve_forever 控制台输入

python - pandas dataframe sum 与 groupby

python - 使用Scrapy抓取目标网站时出现JSONDecodeError