テキストファイルで「-」で終わる行を見つけようとしています。次の表現を使用しましたが、機能しませんでした。私は正規表現に精通していません。誰かが私を助けることができますか?ありがとう!
if re.match(r'[.*+]+\-+[\r\n]', lines[i]):
return i
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
これは、正規表現が必要なタスクのようには見えませんが、以下の式で実行できます。
.*-$
.*
文字列の末尾がすぐ後に続く必要があることを$
指定して、任意の文字を「0回以上」一致させます。-
編集
フラグを set に設定^
し$
て改行に一致させると、まさにそれが行われます。これらは環境に依存するため、改行文字を明示的に一致させることはお勧めしません (あなたの場合は '\r\n')。
デフォルトでは、.*
改行には一致しません。
re.search はもっとシンプルにすべきだと思う
if re.search(r'-$', lines[i]):
return i