简体   繁体   English

提取嵌套括号之间的内容

[英]extract content between nested parenthesis

I want to extract between ObjectUnionOf( and the first closed parenthese coming after it: 我想在ObjectUnionOf(ObjectUnionOf(的第一个封闭括号之间进行提取:

<http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion>

From

EquivalentClasses(<http://www.ifomis.org/bfo/1.1/spanTemporalRegion> ObjectUnionOf(<http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion>))

I tried: 我试过了:

content=content[content.find("ObjectUnionOf(")+1:content.find(")")]

but it doesn't work 但这不起作用

Using Regex: 使用正则表达式:

import re
s = "EquivalentClasses(<http://www.ifomis.org/bfo/1.1/spanTemporalRegion> ObjectUnionOf(<http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion>))"
m = re.search("ObjectUnionOf\((?P<links>.*?)\)", s)
if m:
    print( m.group('links') )

Output: 输出:

<http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion>

Use re.findall : 使用re.findall

import re

txt = '''EquivalentClasses(<http://www.ifomis.org/bfo/1.1/spanTemporalRegion> ObjectUnionOf(<http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion>))'''

print('\n'.join(re.findall(r'ObjectUnionOf\((.*)\)\)', txt)))

# <http://www.ifomis.org/bfo/1.1/spanScatteredTemporalRegion> 
# <http://www.ifomis.org/bfo/1.1/spanConnectedTemporalRegion> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM