【问题标题】:JTextArea regex and ordered listsJTextArea 正则表达式和有序列表
【发布时间】:2012-07-23 14:20:32
【问题描述】:

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

  • 从新行开始。
  • 以数字开头。
  • 接着是句号。
  • 后跟空格或制表符。

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

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

它适用于文本区域内容的第一行,但不适用于其他行。我可以删除“^”,但这会影响有句子的正常行

【问题讨论】:

    标签: java regex swing list jtextarea


    【解决方案1】:

    使用这个

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-02-08
        • 2015-07-19
        • 2012-08-13
        • 2012-05-23
        • 2015-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-15
        相关资源
        最近更新 更多