【问题标题】:Regex expression help java正则表达式帮助java
【发布时间】:2016-09-21 19:34:40
【问题描述】:

我需要这个正则表达式的帮助来将String="55555 <italic>bold-italic</italic>" 分隔成m.group[0]="55555" m.group[1]="italic" and m.group[2]="bold-italic。目前这个表达式<(.*)>(.*)</\\1>italicbold-italic 分开,但我在添加数字部分时遇到问题。

谢谢

【问题讨论】:

    标签: java regex expression


    【解决方案1】:

    当不得不处理正则表达式时,我喜欢使用https://regex101.com/ 来尝试不同的可能性。 它在技术上不是为 Java 设计的,但运行良好(有时您必须插入/删除转义字符才能使其工作)。

    对于您的示例,m.group[0]="55555" 上的正则表达式应该类似于 ([1-9]*),具体取决于您想要准确允许的值以及该组是否应该具有长度限制。

    【讨论】:

      【解决方案2】:

      您可以使用:(\d+)\s*(<\w+>)(.*)<\/\w+>

      演示here

      Java 代码:

      public static void main (String[] args) throws java.lang.Exception
      {
          String pattern = "(\\d+)\\s*(<\\w+>)(.*)<\\/\\w+>";
          String input = "55555 <italic>bold-italic</italic>";
      
          Pattern p = Pattern.compile(pattern);
          Matcher m = p.matcher(input);
          if ( m.find())
          {
              System.out.println("First group : " + m.group(1));
              System.out.println("Second group : " + m.group(2));
              System.out.println("Third group : " + m.group(3));
          }
      }
      

      输出:

      First group : 55555
      Second group : <italic>
      Third group : bold-italic
      

      【讨论】:

      • 如果你想用另一个词代替“斜体”怎么办?
      • 我更新了正则表达式,它应该对其他词一视同仁。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2011-06-10
      相关资源
      最近更新 更多