2017-01-26 20 views
0

Python progamming。私が欲しいものPython:最初に一致するパターンを一致させる方法

abc_clk] -to [all_registers -clock xyz_clk -data_pins 

abc_clk次のとおりです。私は私のようにy.group(3)を得た

y = re.match(r'(.*)(get_clocks)\s+(.*)(\])(.*)$', x, re.M|re.I) 

を使用する場合

x = "set_ccci_path 2 -setup -from [get_clocks abc_clk] -to [all_registers -clock xyz_clk -data_pins] -start" 

: のPython 2.4.3

は、私は、文字列を持っています。これはどうすればいいですか?

y = re.match(r'(.*)\[((get_clocks)(\s+)(?P<c>\w+))\](.*)$', x, re.M|re.I) 
y.group('c') 
+1

Y = re.match(R '(*)(get_clocks)\ S +(*)(\])(*)$。。。'、X、re.M | re.I) –

答えて

0

たぶん、あなたはこのような何かを試みることができます。

import re 
x = "set_ccci_path 2 -setup -from [get_clocks abc_clk] -to [all_registers -clock xyz_clk -data_pins] -start" 
y = re.match(r'(.*)(get_clocks)\s+([^\]]*)(])(.*)$', x, re.M|re.I) 
print y.group(3) 
+0

感謝!このケースではうまくいきます。\ w +がスペースを含む複数の文字列を含むと、\ w +がうまく動作しない可能性があります。 –

0

変更第三のグループ決算かっこを除外すると、あなたが望む結果を得るでしょう:

+0

ありがとうございます!([^ \]] *)はどういう意味ですか? –

+0

ITは非常にもう一度ありがとう! –

+0

'[^ \]] *'それは終わりの角括弧ではないものにマッチすることを意味します。 – GantTheWanderer

関連する問題