tom*_*sen 1 python regex parentheses square-bracket python-3.x
来自@avinash-raj 的回答:
re.findall(r'\([^\[\]()]*\[\([^\[\]()]+source=([\w./]+)', s)
Run Code Online (Sandbox Code Playgroud)
修改后的问题:
我有以下字符串:
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)])]>'
Run Code Online (Sandbox Code Playgroud)
我想将此列表作为输出:
['x.gz','y.gz']
Run Code Online (Sandbox Code Playgroud)
原问题:
我有以下字符串:
s=string='s=<a=1 b=[([(source=x.gz i=0)]), ([(j=1 source=y.gz)])] c=[([(3)])]>'
Run Code Online (Sandbox Code Playgroud)
我想将此列表作为输出:
['x.gz','y.gz']
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个:
re.findall(r'b=\[([^]]*)\]',s)
Run Code Online (Sandbox Code Playgroud)
返回:
['([(source=x.gz i=0)']
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
re.findall(r'\[([^]]*)\]',s)
Run Code Online (Sandbox Code Playgroud)
返回:
['([(source=x.gz i=0)', '(j=1 source=y.gz)', '([(3)']
Run Code Online (Sandbox Code Playgroud)
我同样很高兴得到一行答案或被指出教程,这使我能够在完成后自己找到答案。谢谢。
EDIT1:更改了字符串(参见下面的答案):
s=string='s=<a=1 b=[([(source=x.gz i=0)]), ([(j=1 source=y.gz)])] c=[([(3)])] source=4>'
Run Code Online (Sandbox Code Playgroud)
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)])]>'
Run Code Online (Sandbox Code Playgroud)
我试过这个:
re.findall(r'(?<=b=)\[\(.*?[\S]*?source=([\w\./]+)', s)
Run Code Online (Sandbox Code Playgroud)
但它只返回:
['x.gz']
Run Code Online (Sandbox Code Playgroud)
使用捕获组捕获要打印的字符。
>>> 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']
Run Code Online (Sandbox Code Playgroud)
解释:
\(\[\(按字面意思匹配([(字符。[^\[\]()]*否定字符类,匹配任何字符,但不匹配[or]或(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']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5192 次 |
| 最近记录: |