4

質問のタイトルと同じように。

Pythonと正規表現は初めてです。これにより、段落から特定の単語を検索し、発生のすべてのインデックスを表示する必要があります。

例えば:

段落は次のとおりです。

これはテストテキストであり、テスト、テスト、およびテストに使用されます。

と言葉:

テスト

アルゴリズムは、上記の段落でテストされた3つの単語の重複しない発生のインデックスを返す必要があります(ただし、テストではありません。つまり、部分文字列だけでなく、単語全体を検索することを意味します)。

同じ段落とこの「単語」を使用した別の例:

テストと

アルゴリズムは、 testと。の2つのオカレンスを返す必要があります。

その単語全体のパターンを見つけるには、いくつかの正規表現を使用する必要があると思います。前後には次のような句読点があります。. , ; ? -

グーグルした後、私は何かre.finditerが使われるべきであるとわかりました、しかし私は行くべき正しい方法を見つけていなかったようです。よろしくお願いします。;)

4

2 に答える 2

6

はい、finditer行く方法です。start()一致のインデックスを見つけるために使用します。


例:

import re

a="This is a testing text and used to test and test and test."
print [m.start() for m in re.finditer(r"\btest\b", a)]
print [m.start() for m in re.finditer(r"\btest and\b", a)]

出力:

[35、44、53]
[35、44]

于 2012-08-10T14:19:20.807 に答える
3

正規表現で単語境界アンカー\bを使用して、一致を単語境界で開始/終了することを示します。

>>> sentence = "This is a testing text and used to test and test and test."
>>> pattern = re.compile(r'\btest\b')
>>> [m.start() for m in pattern.finditer(sentence)]
[35, 44, 53]
于 2012-08-10T14:13:08.050 に答える