在括号内提取字符串 - PYTHON

时间:2016-08-17 14:23:26

标签: python string split extract

我有一个字符串“Name(something)”,我试图在括号内提取字符串的一部分!

我尝试了以下解决方案,但似乎没有得到我正在寻找的结果。

n.split('()')

name, something = n.split('()')

5 个答案:

答案 0 :(得分:11)

您可以使用简单的正则表达式来捕捉括号之间的所有内容:

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

正则表达式匹配第一个“(”,然后它匹配 a“的所有内容)”:

  • \(匹配字符“(”字面意思
  • 捕获组([^)]+)贪婪地匹配任何不是“)”
  • 的东西

答案 1 :(得分:3)

作为@Maroun Maroun回答的改进:

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

它在括号中找到所有字符串实例

答案 2 :(得分:1)

您可以在示例中使用拆分,但这样

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

或使用正则表达式

答案 3 :(得分:1)

您可以查找()(需要在正则表达式中使用反斜杠转义),然后使用.*匹配每个字符(将它们捕获在一个组中)。

示例:

import re

s = "name(something)"

regex = r'\((.*)\)'

text_inside_paranthesis = re.match(regex, s).group(1)

print(text_inside_paranthesis)

输出:

something

没有正则表达式,您可以执行以下操作:

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

输出:

something

答案 4 :(得分:0)

您可以使用re.match

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

匹配两个(.*),这意味着什么,其中第二个是括号\(和& \)