私は次のようなSQLコードを持っています:
--START
select * from table;
--END
との間のすべてを取得する必要が--START
あり--END
ます。私が思いついたのは
/--START(?s)(.*)--END/
または
`/--START(\r\n|\r|\n)(?s)(.*)--END/`
最初のものは正常に機能しますが、選択の前に1行の空の行を追加します。だから結局私は得る
empty line
select * from table;
私がする必要があるのは、最初にこの1つの空の行を取り除くことです。誰かが私にそこに着く方法を助けてくれますか:--START + newline
と '--END'の間のすべてを見つけますか?
マッチの改行を試しました-\ nまたは\ r \ n?しかし、そこでの答えは私にはうまくいきませんでした。
一般的に、次のようなパターンを使用できます
/--START\s*(.*?)\s*--END/s
正規表現のデモを参照してください。\s*
0以上の空白に一致しますが--START
、前後に改行は必要ありません--END
。
もう少し具体的なパターンは
/--START\h*\R\s*(.*?)\h*\R\s*--END/s
または、行の先頭に--START
and--END
を表示する必要がある場合は、アンカーとm
修飾子を追加します。
/^--START\h*\R\s*(.*?)\h*\R\s*--END$/sm
詳細
^
-行の開始(m
修飾子が使用されているため)--START
-左側の区切り文字\h*
-0以上の水平方向の空白\R
-改行\s*
-0以上の空白(.*?)
-グループ1:0以上の文字、可能な限り少ない\h*
-0以上の水平方向の空白\R
-改行\s*
-0以上の空白--END
-右側の区切り文字$
-行の終わり。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加