0

で使用しようとしている正規表現にわずかな問題がありますJTextArea。私がやろうとしていることは、順序付けられたリストを無視し、テキスト領域の内容をコンソールに出力する正規表現を作成することです。リストは、次の規則で構成されています。

  • 新しい行から始まります。
  • 数字で始まります。
  • 終止符が続きます。
  • スペースまたはタブが続きます。

これまでのところ、これは私が使用しているコードです。

String content = txt.getText();
String removeOrderdList = content.replaceAll("^(\\d+).[ \t]+", "");

テキスト領域のコンテンツの最初の行ではうまく機能しますが、他の行ではうまく機能しません。「^」を削除することはできますが、これは文のある通常の行に影響します

4

2 に答える 2

1

これを使って

String content = txt.getText();
String removeOrderdList = content.replaceAll("(?m)^\\d+\.[ \t]+", "");
于 2012-07-23T14:35:46.553 に答える
0

これを行うには、Multilineフラグ(?m)を使用できます。これにより^、各行の先頭が一致します。

String content = "1. rgwfdfs \nnormal text \n3. fdhjsdf\nmore normal text";
System.out.println(content.replaceAll("(?m)^(\\d+)\\.[ \t]+.*\\n", ""));

プリント

normal text 
more normal text

\\.また、文字ではなく終止符が一致することを確認するためにを使用する必要があることにも注意してください。

[編集]

私はあなたがリストを無視しようとしているのではなく、リストの最初の部分を無視しようとしていることに気づきました。したがって、これを行うには、次を使用します。

String content = "1. rgwfdfs \nnormal text \n3. fdhjsdf\nmore normal text";
System.out.println(content.replaceAll("(?m)^(\\d+).[ \t]+", ""));

これは印刷します:

rgwfdfs 
normal text 
fdhjsdf
more normal text
于 2012-07-23T14:28:27.960 に答える