JTextArea正则表达式和有序列表

时间:2012-07-23 14:20:33

标签: java regex swing list jtextarea

我正在尝试在我的JTextArea上使用正则表达式时出现轻微问题。我正在尝试编写一个正则表达式,它将忽略任何有序列表并将文本区域内容打印到控制台。列表的结构遵循以下约定:

  • 开始新的一线。
  • 以数字开头。
  • 完全停下来。
  • 后跟空格或标签。

到目前为止,这是我正在使用的代码:

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

它在文本区域内容的第一行上很有用,但在其他行上却没有。我可以删除“^”,但这将影响具有句子的普通行

2 个答案:

答案 0 :(得分:1)

使用此

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

答案 1 :(得分:0)

您可以使用多行标记(?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