Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式模式,仅从字符串列表中获取特定部分_Java_Regex - Fatal编程技术网

Java 正则表达式模式,仅从字符串列表中获取特定部分

Java 正则表达式模式,仅从字符串列表中获取特定部分,java,regex,Java,Regex,由于我不熟悉正则表达式模式,我想从下面提到的字符串列表中提取特定部分,并将其作为键值对存储在映射中 例如: List<String> ref3Path = new ArrayList<String>(); ref3Path.add("s3://REF3/ca209_040/ahshd.csv"); ref3Path.add("s3://REF3/ca209_040/grren.csv"); ref3Path.add("s3://REF3/ca209_030/aestyy

由于我不熟悉正则表达式模式,我想从下面提到的字符串列表中提取特定部分,并将其作为键值对存储在映射中

例如:

List<String> ref3Path = new ArrayList<String>(); 
ref3Path.add("s3://REF3/ca209_040/ahshd.csv");
ref3Path.add("s3://REF3/ca209_040/grren.csv");
ref3Path.add("s3://REF3/ca209_030/aestyyuae.csv");
List ref3Path=new ArrayList();
ref3Path.add(“s3://REF3/ca209_040/ahshd.csv”);
ref3Path.add(“s3://REF3/ca209_040/grren.csv”);
ref3Path.add(“s3://REF3/ca209_030/aestyyuae.csv”);
我只想要上面列表中的ca209_040aesae.csv,并希望存储在地图中

下面是我正在编写的比较列表和地图的代码:

public static void main(String[] args) {
    // TODO Auto-generated method stub

    MultiValuedMap<String, String> studyDomain = new ArrayListValuedHashMap<>();
    List<String> ref3Path = new ArrayList<String>(); 

    studyDomain.put("ca209_040", "czvv.csv");
    studyDomain.put("ca209_040", "efe.csv");
    studyDomain.put("ca209_030", "efef.csv");
    studyDomain.put("ca209_030", "hhhjd.csv");
    studyDomain.put("ca209_020", "rr.csv");
    studyDomain.put("ca209_020", "eghh.csv");

    ref3Path.add("s3://REF3/ca209_040/jlkjl.csv");
    ref3Path.add("s3://REF3/ca209_040/aesaehkhk.csv");
    ref3Path.add("s3://REF3/ca209_030/aesaedhd.csv");
    ref3Path.add("null");
    ref3Path.add("s3://REF3/ca209_020/aedae.csv");
    ref3Path.add("s3://REF3/ca209_020/aeqwee.csv");

    log.info("List of inbox: " +studyDomain);
    log.info("List of ref3 :" +ref3Path);

    rule1(studyDomain,ref3Path);
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
MultiValuedMap studyDomain=新的ArrayListValuedHashMap();
List ref3Path=new ArrayList();
研究领域投入(“ca209_040”、“czvv.csv”);
研究领域投入(“ca209_040”、“efe.csv”);
研究领域投入(“CA209030”、“efef.csv”);
studyDomain.put(“ca209_030”,“hhhjd.csv”);
研究领域投入(“ca209_020”,“rr.csv”);
studyDomain.put(“ca209_020”,“eghh.csv”);
ref3Path.add(“s3://REF3/ca209_040/jlkjl.csv”);
ref3Path.add(“s3://REF3/ca209_040/AESAEHKK.csv”);
ref3Path.add(“s3://REF3/ca209_030/aesaedhd.csv”);
ref3Path.add(“空”);
ref3Path.add(“s3://REF3/ca209_020/aedae.csv”);
ref3Path.add(“s3://REF3/ca209_020/aeqwee.csv”);
log.info(“收件箱列表:+studyDomain”);
log.info(“ref3列表:+ref3Path”);
规则1(研究领域,参考3路径);
}

您可以使用简单的
拆分功能来完成此操作。正则表达式模式是过度的

注:检查边界条件

scala> val arr = "s3://REF3/ca209_040/aesae.csv".split('/')
arr: Array[String] = Array(s3:, "", REF3, ca209_040, aesae.csv)

scala> arr(3)
res2: String = ca209_040

scala> arr(4)
res3: String = aesae.csv
public class Demo {
    public static void main(String[] s) {
        String[] args = "s3://REF3/ca209_040/aesae.csv".split("/");
        System.out.println(args[3] + " ,  " + args[4]);
    }
}
在爪哇 注:检查边界条件

scala> val arr = "s3://REF3/ca209_040/aesae.csv".split('/')
arr: Array[String] = Array(s3:, "", REF3, ca209_040, aesae.csv)

scala> arr(3)
res2: String = ca209_040

scala> arr(4)
res3: String = aesae.csv
public class Demo {
    public static void main(String[] s) {
        String[] args = "s3://REF3/ca209_040/aesae.csv".split("/");
        System.out.println(args[3] + " ,  " + args[4]);
    }
}

如果我理解正确,您需要的正则表达式是
s3://REF3/(\w+)/(\w+\。\w+)
,然后将第一个组作为键,第二个组作为值。由于我不知道如何使用正则表达式,您可以应用它并在这里演示给我看。这不是一个真正的问题;这更像是一个编写代码的请求。请试试。。。然后可能会重新表述这个问题。为什么这个问题被标记为“scala”?@ShwetaSharma添加了Java代码。现在只需迭代列表中的每个元素,然后拆分,然后将其转换为Map
args[3]
是您的映射键,
args[4]
是您的映射值它将正确拆分
字符串
,但在解析
ref3Path.add(“null”)时将出现
索引自动边界异常
。此值将添加到问题代码中。