N lines
次のように、 で構成される複数行の文字列を考えてみましょう。
Line 1 text
Line 2 text
Line 3 text
...
Line n-1 text
Line n text
anchor=value
Line n+2 text
Line n+3 text
Line n+4 text
...
Line N text
キーはanchor
どの行にも表示されず、アンカーの前と=
それに続く記号の周りにスペースがある場合があります。
上記の文字列を 3 つのグループに分割する正規表現が必要です。
- ライン 1 からライン n (包括的)
- アンカーライン(仕切りポイント)
- n+2 行目から N 行目まで (包括的)
私が解決策に最も近いのは
(?s)^(?:(?!anchor\s*=\s*).)+?\r|\nanchor\s*=\s*([^\r\n]+)(?:\r|\n)(.*)
ただし、上記の正規表現では、最初に一致したグループにテキスト全体が含まれ、残りの 2 つのグループが期待どおりに入力されます。
追加の要件は、正規表現が大量のデータに適用されるため、可能な限り高速である必要があることです。この使用例では、単一の正規表現による処理が唯一のオプションであることにも注意してください。
何か案は?