文字列「Name(something)」があり、括弧内の文字列の部分を抽出しようとしています!
Iv'eは次の解決策を試しましたが、私が探している結果が得られていないようです。
n.split('()')
name, something = n.split('()')
単純な正規表現を使用して、括弧の間のすべてをキャッチできます。
>>> import re
>>> s = 'Name(something)'
>>> re.search('\(([^)]+)', s).group(1)
'something'
正規表現は最初の "("に一致し、次にnot a ")"のすべてに一致します。
\(
文字「(」に文字通り一致します([^)]+)
「)」以外のものと貪欲に一致する@Maroun Marounの回答の改善として:
re.findall('\(([^)]+)', s)
括弧の間にある文字列のすべてのインスタンスを検索します
あなたの例のように分割を使用することができますが、このように
val = s.split('(', 1)[1].split(')')[0]
または正規表現を使用する
(
と)
(正規表現でバックスラッシュを使用してこれらをエスケープする必要があります)を探し、.*
を使用してすべての文字を照合できます(これをグループにキャプチャします)。
例:
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
re.match
を使用できます:
>>> import re
>>> s = "name(something)"
>>> na, so = re.match(r"(.*)\((.*)\)" ,s).groups()
>>> na, so
('name', 'something')
これは2つの(.*)
に一致します。これは何でも意味し、2番目は括弧\(
と\)
の間にあります。