[解決済み] 複数行のテキストブロックにマッチする正規表現
質問
Pythonの正規表現で、複数行にまたがるテキストに対してマッチングする際に、少し問題があります。例題のテキストは次のとおりです('nothing'は改行)。
some Varying TEXT\n
\n
DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n
[more of the above, ending with a newline]\n
[yep, there is a variable number of lines here]\n
\n
(repeat the above a few hundred times).
some_Varying_TEXT」部分と、その2行下にある大文字のテキストをすべて1回のキャプチャで取り込みたいのです(改行文字は後で取り除くことができます)。 いくつかのアプローチで試してみました。
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
と多くのバリエーションがありますが、うまくいきません。最後のものは、テキストの行を1つずつマッチングさせるようですが、これは私が本当に望んでいるものではありません。最初の部分は問題なくキャッチできるのですが、4~5行の大文字のテキストをキャッチできないようです。 私は match.group(1) が some_Varying_Text で、group(2) が空行に出会うまで line1+line2+line3+etc であって欲しいと思っています。
もし興味があれば、タンパク質を構成するアミノ酸の配列であることを想定しています。
解き方は?
これを試してみてください。
re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
一番問題なのは、このように
^
と
$
アンカーが改行と一致するように設定されていますが、一致しません。 マルチラインモードでは
^
はすぐに
以下
改行と
$
は、その直後の位置に一致します。
直前の
を改行する。
また、改行にはラインフィード(
\n
)、キャリッジリターン(
\r
)、またはキャリッジリターン+改行(
\r\n
). 対象となるテキストが改行のみを使用することが確実でない場合、このより包括的なバージョンの正規表現を使用する必要があります。
re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
ところで、ここでは DOTALL 修飾子は使わないでください。ドットがすべてにマッチするという事実に頼っていることになります。 ただし の改行が必要です。
関連
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] 正規表現における非捕捉グループとは何ですか?
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] 有効な正規表現を検出するための正規表現はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 カメの描画コマンドとその例
-
Python jiabaライブラリの使用方法について説明
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Flaskのテンプレートが見つからない【重複あり