正则表达式在python中嵌套括号

发布于 2021-01-29 16:14:57

我有这样的事情:

Othername California (2000) (T) (S) (ok) {state (#2.1)}

是否有正则表达式代码可获取:

Othername California ok 2.1

也就是说,我想将数字保持在圆括号内,将其依次放在{}内,并将文本“ ok”保持在()内。我特别需要打印出“
ok”字符串(如果包含在我的行中),但是我想去除括号内的其他文本,例如(V),(S)或(2002)。

我知道,正则表达式可能不是解决此类问题的最有效方法。

任何帮助,将不胜感激。

编辑:

该字符串可能会有所不同,因为如果某些信息不可用,则该行中将不包含该字符串。文本本身也是可变的(例如,我没有每一行都有“状态”)。因此,可以有例如:

Name1 Name2 Name3 (2000) (ok) {edu (#1.1)}
Name1 Name2 (2002) {edu (#1.1)}
Name1 Name2 Name3 (2000) (V) {variation (#4.12)}
关注者
0
被浏览
192
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    正则表达式

    (.+)\s+\(\d+\).+?(?:\(([^)]{2,})\)\s+(?={))?\{.+\(#(\d+\.\d+)\)\}
    

    正则表达式图像

    用于测试的文字

    Name1 Name2 Name3(2000){教育(#3.2)}
    Name1 Name2 Name3(2000)(ok){edu(#1.1)}
    Name1 Name2(2002){edu(#1.1)}
    Name1 Name2 Name3(2000)(V){variation(#4.12)}
    加州(2000)(T)(S)(ok){州(#2.1)}
    

    测试

    >>> regex = re.compile(“(。+)\ s + \(\ d + \)。+?(?:\(([[^)] {2,})\)\ s +(?= {)) ?\ {。+ \(#(\ d + \。\ d +)\)\}“})
    >>> r = regex.search(字符串)
    >>> r
    <_sre.SRE_Match对象位于0x54e2105f36c16a48>
    >>> regex.match(字符串)
    <_sre.SRE_Match对象位于0x54e2105f36c169e8>
    
    #运行findall
    >>> regex.findall(字符串)
    [
       (u'Name1 Name2 Name3',u'',u'3.2'),
       (u'Name1 Name2 Name3',u'ok',u'1.1'),
       (u'Name1 Name2',u'',u'1.1'),
       (u'Name1 Name2 Name3',u'',u'4.12'),
       (u'Othername California',u'ok',u'2.1')
    ]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看