1

テキストファイルで「-」で終わる行を見つけようとしています。次の表現を使用しましたが、機能しませんでした。私は正規表現に精通していません。誰かが私を助けることができますか?ありがとう!

if re.match(r'[.*+]+\-+[\r\n]', lines[i]):
    return i
4

3 に答える 3

5

re.match文字列の先頭から一致が見つかった場合にのみ、文字列と一致します。本当に を使用したい場合re.matchは、次の正規表現を使用できます

if re.match(r'.*-$', lines[i].rstrip("\n")):
    return i

ただし、このタスクには正規表現はまったく必要ありません。次のようなことができます

for i, line in enumerate(lines):
    if line.rstrip("\n")[-1] == "-":
       return i 
于 2013-11-15T03:24:49.667 に答える
2

これは、正規表現が必要なタスクのようには見えませんが、以下の式で実行できます。

.*-$

正規表現の視覚化

.*文字列の末尾がすぐ後に続く必要があることを$指定して、任意の文字を「0回以上」一致させます。-

編集

フラグを set に設定^$て改行に一致させると、まさにそれが行われます。これらは環境に依存するため、改行文字を明示的に一致させることはお勧めしません (あなたの場合は '\r\n')。

デフォルトでは、.*改行には一致しません。

于 2013-11-15T03:26:24.947 に答える
0

re.search はもっとシンプルにすべきだと思う

if re.search(r'-$', lines[i]):
    return i
于 2013-11-15T04:19:54.653 に答える