Extract string within parentheses - PYTHON

前端 未结 5 1408
深忆病人
深忆病人 2020-12-16 01:00

I have a string \"Name(something)\" and I am trying to extract the portion of the string within the parentheses!

Iv\'e tried the following solutions but don\'t seem

相关标签:
5条回答
  • 2020-12-16 01:40

    You can look for ( and ) (need to escape these using backslash in regex) and then match every character using .* (capturing this in a group).

    Example:

    import re
    
    s = "name(something)"
    
    regex = r'\((.*)\)'
    
    text_inside_paranthesis = re.match(regex, s).group(1)
    
    print(text_inside_paranthesis)
    

    Outputs:

    something
    

    Without regex you can do the following:

    text_inside_paranthesis =  s[s.find('(')+1:s.find(')')]
    

    Outputs:

    something
    
    0 讨论(0)
  • 2020-12-16 01:41

    as an improvement on @Maroun Maroun 's answer:

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

    it finds all instances of strings in between parentheses

    0 讨论(0)
  • 2020-12-16 01:44

    You can use re.match:

    >>> import re
    >>> s = "name(something)"
    >>> na, so = re.match(r"(.*)\((.*)\)" ,s).groups()
    >>> na, so
    ('name', 'something')
    

    that matches two (.*) which means anything, where the second is between parentheses \( & \).

    0 讨论(0)
  • 2020-12-16 01:47

    You can use split as in your example but this way

    val = s.split('(', 1)[1].split(')')[0]
    

    or using regex

    0 讨论(0)
  • 2020-12-16 01:48

    You can use a simple regex to catch everything between the parenthesis:

    >>> import re
    >>> s = 'Name(something)'
    >>> re.search('\(([^)]+)', s).group(1)
    'something'
    

    The regex matches the first "(", then it matches everything that's not a ")":

    • \( matches the character "(" literally
    • the capturing group ([^)]+) greedily matches anything that's not a ")"
    0 讨论(0)
提交回复
热议问题