【问题标题】:How do I write regular expression to match the below pattern如何编写正则表达式以匹配以下模式
【发布时间】:2021-09-21 08:51:19
【问题描述】:

模式:(任何特殊字符、换行符、空格、字母和数字)[!-(任何特殊字符、字母和数字)-!](任何特殊字符、换行符、空格、字母和数字)

示例: !|这是第一行|

|abc|62883HJKS,JSK|56.23|28378|!-23838.37|63883BC|9729-!|

需要匹配所有子字符串,如 !-23838.37|63883BC|9729-!

【问题讨论】:

  • 提供输入文本和正则表达式输出的示例,以更好地理解您的任务。
  • 提供样本输入输出

标签: java regex substring


【解决方案1】:

它可以像这样工作

  final String regex = "(!-.*?-!)";
  
  Matcher m = Pattern.compile(regex)
        .matcher(
           "|abc|6288\n3HJKS,JSK|28378|!-23838|63883BC|9729-!|abc|62883HJKS,JSK|28378|!-8XX38|638,83BC|9729-!|abc|62883HJKS,JSK|28378|!-8XX38|638\n83BC|9729-!|");

  while (m.find()) {

     System.out.println(m.group(1));
     
  }

结果:

  1. !-23838|63883BC|9729-!
  2. !-8XX38|638,83BC|9729-!

!-8XX38|638\n83BC|9729-!被忽略

您可以使用诸如 (!-[a-zA-Z0-9|,.?!]?-!) 之类的东西来代替正则表达式 (!-.?-!) .采用 *?进行惰性匹配以获得最短范围!-...-!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多