当前位置: 首页 > 面试题库 >

使用正则表达式获取字符串中最短的组

靳涵亮
2023-03-14
问题内容

我有一长串,我需要找到所有最短的组。目前正在发生的事情是我要分成2组,其中一组包含之间的所有数据(可能根据需要更具体)。我不明白我应该在正则表达式模式中进行哪些更改以处理我的情况。

字串 -"aaa START1 value1 /END bbb START2 value2 /END TAG ccc START3 value3 /END TAG ddd"

预期 - START2 value2 /END TAG , START3 value3 /END TAG
实际 - START1 value1 /END bbb START2 value2 /END TAG , START3 value3 /END TAG

我的课是-

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Reg {
    public static void main(String[] args) {
        String response = "aaa START1 value1 /END bbb START2 value2 /END TAG ccc START3 value3 /END TAG ddd";

        StringBuilder sb1 = new StringBuilder();

        Pattern p = Pattern.compile("START[0-9]+(.*?)/END TAG");
        Matcher matcher1 = p.matcher(response);

        while (matcher1.find()) {

            sb1.append(matcher1.group()).append(" , ");
        }
        System.out.println(sb1);
    }
}

问题答案:
START[0-9]+(?:(?!\\bSTART).)*?/END TAG

您可以尝试此操作。请参阅演示。lookahead这不会START在您的组之间出现另一个。

https://regex101.com/r/cJ6zQ3/21



 类似资料:
  • 问题内容: 我有这串 并且我需要提取这3个子字符串 1234 06:30 07:45 如果我使用此正则表达式\\ d {2} \:\\ d {2}我只能提取第一个小时的06:30 matcher.group(1)引发异常。 另外我也不知道如何提取1234。此字符串可以更改,但总是在’XX〜’之后 。您对如何将这些字符串与正则表达式匹配有任何想法吗? 更新 多亏了亚当的建议,我现在有了这个正则表达式

  • 我有一个包含数千行的文本文件。这里有一个例子 我试图提取'nt60'、'nt50'末尾的字符串。 问题是会包含行尾字符() 我想使用正则表达式搜索来匹配从 (') 开始的字符串,但我不知道我应该用什么来匹配 。 有人能帮忙吗?

  • 问题内容: 我需要从字符串中提取: 使用Java语言中的正则表达式。 有人可以帮帮我吗?我是第一次使用正则表达式。 问题答案: 尝试

  • 问题内容: 我试图编写一个正则表达式,该表达式返回括号之间的字符串。例如:我想获取位于字符串“(”和“)”之间的字符串 会回来 找到正则表达式以获取Javascript中两个字符串之间的字符串,但是我对regex并不陌生。我不知道如何在正则表达式中使用’(’,’)’ 问题答案: 您需要创建一组转义的(带有)括号(与括号匹配)和一组常规的括号来创建捕获组: 分解: :匹配左括号 :开始捕获组 :匹配

  • 我想为C中的一些字符串创建一个正则表达式。 这就是我目前的情况: C中的字符串由双引号(")分隔,因此正则表达式必须由 \" \". 字符串可能不包含换行符,因此我需要执行[^\n](我想)。 字符串还可能包含双引号或反斜杠字符,如果且仅当它们被转义时。因此[\\\”](我想也是这样)。 除此之外,什么都可以。 任何帮助是非常感谢我有点迷失了如何开始写这个正则表达式。

  • 我需要一个只有文字的明文,不包括所有数字、额外空格、破折号、逗号、点、括号等。它用于文字生成算法(取自gamasutra)。我想正则表达式在这里会有所帮助。我如何在String.split的帮助下做到这一点? UPD: 输入:我有1337这样一个字符串,其中包含不同的内容:逗号、许多空格、数字-2 3 4、破折号。如何删除所有内容? 输出:我有这样一个字符串,里面有不同的东西,逗号,很多空格,数字