web-dev-qa-db-ja.com

2つの特殊文字の間の文字列を見つけるにはどうすればよいですか?

たとえば、2つの角括弧の間にすべてが必要です。 File1

[Home sapiens]
[Mus musculus 1]
[virus 1 [isolated from china]]

したがって、上記の例を考慮すると、最初と最後の角括弧の間にすべてが必要です。

11
Lord Voldemort

正規表現は最も柔軟なオプションです。

別のアプローチとして、文字列の partition および rpartition メソッドを試すことができます。

>>> s = "[virus 1 [isolated from china]]"
>>> s.partition('[')[-1].rpartition(']')[0]
'virus 1 [isolated from china]'
19
orip

貪欲な正規表現を使用できます。

re.search(r'\[(.*)\]', your_string).group(1)
19
Blender

サンプル入力を考えると、すべての行が角かっこで始まり、括弧で終わるように見えます。その場合、正規表現を忘れてください。これは簡単です。

for line in whatever:
    contents = line.strip()[1:-1]

(行ソースが改行を残している場合、または入力の閉じ括弧の後に非表示のスペースがある場合に備えて、stripを追加しました。不要な場合は省略してください。)

2
abarnert