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 回答