Java Reg表达式-在匹配字符串之间拆分字符串

Java Reg表达式-在匹配字符串之间拆分字符串,java,regex,Java,Regex,我试图从一个长字符串中获取一个字符串数组。数组由两个其他字符串之间匹配的字符串组成(?在我的例子中是?)。我尝试了下面的代码,但没有得到预期的结果 Pattern pattern = Pattern.compile("\\?\\?\\?(.*?)\\?\\?\\?"); String[] arrayOfKeys = pattern.split("???label.missing???sdfjkhsjkdf sjkdghfjksdg ???some.label???sdjkhsdj");

我试图从一个长字符串中获取一个字符串数组。数组由两个其他字符串之间匹配的字符串组成(
在我的例子中是
)。我尝试了下面的代码,但没有得到预期的结果

Pattern pattern = Pattern.compile("\\?\\?\\?(.*?)\\?\\?\\?");
    String[] arrayOfKeys = pattern.split("???label.missing???sdfjkhsjkdf sjkdghfjksdg ???some.label???sdjkhsdj");

    for (String key : arrayOfKeys) {
        System.out.println(key);
    }
我的预期结果是:

["label.missing", "some.label"]
用于获取输入字符串的模式,然后用于查找所需的模式
Matcher.find()
将查找与提供的
模式匹配的子字符串

Pattern pattern = Pattern.compile("\\?{3}(.*?)\\?{3}");
Matcher m = pattern.matcher(inputString);

while (m.find()) {
    System.out.println(m.group(1));
}
将使用您的模式作为分隔符来分割字符串(然后将丢弃分隔符部分),这显然不是本例中所需的。您的正则表达式设计为与要提取的文本匹配

我将模式缩短为使用量词精确重复3次
{3}
,而不是写入
\?
3次。

用于获取输入字符串的a,然后使用查找所需的模式
Matcher.find()
将查找与提供的
模式匹配的子字符串

Pattern pattern = Pattern.compile("\\?{3}(.*?)\\?{3}");
Matcher m = pattern.matcher(inputString);

while (m.find()) {
    System.out.println(m.group(1));
}
将使用您的模式作为分隔符来分割字符串(然后将丢弃分隔符部分),这显然不是本例中所需的。您的正则表达式设计为与要提取的文本匹配


我将模式缩短为使用量词精确重复3次,而不是写3次。

我将创建一个字符串输入,其中包含您试图拆分的内容,并对其调用input.split()

请在此处尝试:

我将创建一个包含您试图拆分的内容的字符串输入,并对其调用input.split()

请在此处尝试:
Pattern=Pattern.compile(“\\?{3}(+?)\\?{3}”);
Matcher Matcher=pattern.Matcher(“???label.missing???sdfjkhsjkdf sjkdghfjksdg???some.label???sdjkhsdj”);
列表列表=新的ArrayList();
while(matcher.find()){
列表添加(匹配器组(1));
}
for(字符串键:aList){
系统输出打印项次(键);
}
Pattern=Pattern.compile(“\\?{3}(+?)\\?{3}”);
Matcher Matcher=pattern.Matcher(“???label.missing???sdfjkhsjkdf sjkdghfjksdg???some.label???sdjkhsdj”);
列表列表=新的ArrayList();
while(matcher.find()){
列表添加(匹配器组(1));
}
for(字符串键:aList){
系统输出打印项次(键);
}

您如何从所需物品中识别垃圾物品?哦,只有标签才是所需的?你可以每隔一件就拿一件?你如何从想要的物品中识别出垃圾物品?哦,只有标签是需要的?你可以把其他的都拿走吗?
    Pattern pattern = Pattern.compile("\\?{3}(.+?)\\?{3}");
    Matcher matcher= pattern.matcher("???label.missing???sdfjkhsjkdf sjkdghfjksdg ???some.label???sdjkhsdj");

     List<String> aList = new ArrayList<String>();

     while(matcher.find()) {
         aList.add(matcher.group(1));
     }


    for (String key : aList) {
        System.out.println(key);
    }