1

私がやりたいことは、二重線の左右の部分を取ることです。例

LEFT_PART\r\n\r\nRIGHT_PART

左右の部分は何でもかまいませんが、二重の改行は含まれません。私がやっていることは機能していません (私が与えた文字列と一致しません)。これが私がこれまでやってきたことです。

^(.*)[\r\r|\n\n|\r\n\r\n]{1,1}(.*)$

任意の文字列で開始でき、その後に正確に 1 つの二重改行が続き、その後に任意の文字列が続きます。後で使用する必要があるため、左右をグループ化します。

編集ORを使用して、3種類の改行すべてをカバーします

4

4 に答える 4

2

角括弧は、グループ化ではなく文字クラスに使用されます。括弧を使用してみてください:

^(.*)(\r\r|\n\n|\r\n\r\n)(.*)$

また、二重の改行をキャプチャしないようにします。

^(.*)(?:\r\r|\n\n|\r\n\r\n)(.*)$

{1,1}も冗長です。私はそれを削除しました。

于 2013-09-05T06:48:04.467 に答える
1

これを試して:

(?m)^(.*)$[\r\n]{1,2}^$[\r\n]{1,2}^(.*)$

このスイッチ(?m)には、キャレットとドル記号が正規表現の残りの改行の前後で一致するという効果があります。

これは、この正規表現の動作のライブデモです。

于 2013-09-05T06:49:43.143 に答える
1

1 文字だけに一致する文字クラスを使用しているため、機能していません。括弧を使用する必要があります。{n}また、量指定子を使用して正規表現を簡素化できます。を一致させるには、次\r\rを使用します\r{2}

^(.*)(?:\r|\n|\r\n){2}(.*)$  

それとは別に、次を使用してシステムの行区切りを取得したいと思います。

String lineSeparator = System.getProperty("line.separator");
String regex = "^(.*)" + Pattern.quote(lineSeparator) + "{2}(.*)$  
于 2013-09-05T06:47:48.953 に答える