Python regex の部分式で、グローバルではなく、改行を含むすべての文字にマッチします。
2023-09-10 07:39:33
質問
私は
re.MULTILINE
が
ではない
re.DOTALL
というように、quot; any character" のワイルドカードと通常の
.
というワイルドカードの両方を含む正規表現を作成できます。
これを行う方法はありますか?改行を含めたいこれらのインスタンスで任意の文字に一致させるには、何を使用すればよいですか?
どのように解決するのですか?
改行や、quot;任意のシンボル(quot;)にマッチするように
re.S
/
re.DOTALL
のいずれかを使用することができます。
-
(?s:.)
- その インラインモディファイアグループ でs
フラグをオンにすると、すべての.
パターンが改行文字を含むすべての文字にマッチするようにします。 -
以下のいずれかの回避策をとる。
[\s\S]
[\w\W]
[\d\D]
主な考え方は、文字クラスの中の反対の速記クラスは、入力文字列の中にあるどんな記号にもマッチするということです。
と比較すると
(.|\s)
などと比較すると、文字クラスによる解決はバックトラックが少ないため、より効率的です。
*
または
+
の量詞)。小さな例を比較してみましょう。
(?:.|\n)+
45ステップで完了するのに対して
[\s\S]+
はわずか2ステップです。
をご覧ください。
Pythonのデモ
で始まる行をマッチングしているところです。
123
で始まり、最初に現れる
3
まで、そしてその行の残りを含む。
import re
text = """abc
123
def
356
more text..."""
print( re.findall(r"^123(?s:.*?)^3.*", text, re.M) )
# => ['123\ndef\n356']
print( re.findall(r"^123[\w\W]*?^3.*", text, re.M) )
# => ['123\ndef\n356']
関連
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Django filter queryset __in for *every* item in list