括弧の前にいくつかの単語を探したい文字列があります。文字列があるとしましょう -%sは正規表現で奇妙な動作を示しています
私はせいぜい5つのワードをキャプチャしたい
「はまた、うつ病症候群(DS)を持っている大腸癌(CRC)を有する、世界の多くの人々があります」かっこの前に。私は括弧の中にある略語のリストacronym_list
を持っています - [(crc), (ds)]
。だから私は、次のコードを使用しています -
acrolen=5
rt=[]
for acro in acronym_list:
find_words= re.findall('((?:\w+\W+){1,%d}%s)' %(acrolen, acro), text, re.I)
for word in find_words:
rt.append(word)
print rt
をしかし、これは、この結果を与える -
('the world having colorectal cancer (crc', 'crc')
('also have the depression syndrome (ds', 'ds')
私は正規表現を使用する場合のに対して -
find_words= re.findall('((?:\w+\W+){1,%d}\(crc\))' %(acrolen),s, re.I)
を次に見つけることができまさに私が欲しいもの -
the world having colorectal cancer (crc)
質問です - 私はきちんとそう第一正規表現を使用するにはどうすればよい(..頭字語などを繰り返し、その周りに不要な括弧を持つ)、ここでとても大幅に異なるように正規表現マッチを引き起こして文字列を
を%s
を使用する理由正規表現で毎回正確な文字列を入力するのではなく、ループを使用してプロセスを自動化することができますか?
ありがとう、これは非常に有益でした。しかし、{{1、{0}}} {1}はどのように '{1、%d}%s 'と同じように働いたのか説明できますか? – user1993
フォーマット文字列では、 '{n}'はメソッドの引数のプレースホルダです。リテラルブレースを示すには、2倍にする必要があります。 –