任意の量のスペースで始まり、その後に文字が続く連続した行を一致させようとしています|
。s
フラグを使用しているため、.
改行に一致します。
私がこれまでに持っていたものは、前に限られた量の空白で機能し|
ます。
要件を満たさないラインに達したと判断する部分に問題があります。何らかの理由\n\s*[^\|]
でトリックを行いません。私が今していることは次のとおりです。
(?P<terminating>
\n( # when newline is encountered...
[^\|\s] # check if next character is not: (| or space)
|
[\s][^\|\s] # check if next characters are not: space + (| or space)
|
[\s][\s][^\|\s] # check if next characters are not: space + space + (| or space)... And so on....
)
|
$
)
これは明らかに 2 つのスペースでのみ機能します。これを任意の量のスペースで機能させたいと思います。私は再帰を調べましたが、この場合、それは非常に重い銃のようです。これが私の質問です:なぜうまくいか\n\s*[^\|]
ないのですか?再帰なしでこれを解決する別の方法はありますか?
以下は、取得したい入力と結果の一致の例です。
入力文字列:
Lorem ipsum dolor sit amet,
consectetur adipisicing
elit,
|sed do
|eiusmod tempor incididunt
|ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation
ullamco laboris nisi ut
aliquip ex ea commodo consequat.
出力は、コンテンツを含む 1 つの文字列です。
|sed do\n |eiusmod tempor incididunt\n |ut labore et dolore magna aliqua.
その中にある各行と3回一致することは望ましくありません|
。