Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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正则表达式不匹配任何内容 String=“\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000000\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000002\n”+ “\n”+ ""; Pattern=Pattern.compile(“()(.*)()”; Matcher-Matcher=pattern.Matcher(字符串); List listMatches=新建ArrayList(); while(matcher.find()) { 添加(matcher.group(2)); }_Java_Regex - Fatal编程技术网

Java正则表达式不匹配任何内容 String=“\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000000\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000002\n”+ “\n”+ ""; Pattern=Pattern.compile(“()(.*)()”; Matcher-Matcher=pattern.Matcher(字符串); List listMatches=新建ArrayList(); while(matcher.find()) { 添加(matcher.group(2)); }

Java正则表达式不匹配任何内容 String=“\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000000\n”+ “\n”+ “\n”+ “C0401\n”+ “20150301\n”+ “PK1000002\n”+ “\n”+ ""; Pattern=Pattern.compile(“()(.*)()”; Matcher-Matcher=pattern.Matcher(字符串); List listMatches=新建ArrayList(); while(matcher.find()) { 添加(matcher.group(2)); },java,regex,Java,Regex,如果我用Type或InvDate或No替换项目,我可以获取内容 寻找答案。谢谢您需要使用DOTALL标志使DOT匹配任何字符,包括换行符: String string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<Request>\n" + " <Item>\n" + " <Type>C0401</Typ

如果我用
Type
InvDate
No
替换项目,我可以获取内容


寻找答案。谢谢

您需要使用
DOTALL
标志使
DOT
匹配任何字符,包括换行符:

String string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
            "<Request>\n" +
            "  <Item>\n" +
            "    <Type>C0401</Type>\n" +
            "    <InvDate>20150301</InvDate>\n" +
            "    <No>PK1000000</No>\n" +
            "  </Item>\n" +
            "  <Item>\n" +
            "    <Type>C0401</Type>\n" +
            "    <InvDate>20150301</InvDate>\n" +
            "    <No>PK1000002</No>\n" +
            "  </Item>\n" +
            "</Request>";
    Pattern pattern = Pattern.compile("(<Item>)(.*)(</Item>)");
    Matcher matcher = pattern.matcher(string);

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

    while(matcher.find())
    {
        listMatches.add(matcher.group(2));
    }
Pattern=Pattern.compile((?s)(()(.*)());
否则:

Pattern pattern = Pattern.compile("(?s)(<Item>)(.*)(</Item>)");
Pattern=Pattern.compile((())(),Pattern.DOTALL);

您必须使用选项
Pattern.DOTALL
用于多线马赫数:

Pattern pattern = Pattern.compile("(<Item>)(.*)(</Item>)", Pattern.DOTALL);
 Pattern pattern = Pattern.compile("(<Item>)(.*)(</Item>)",Pattern.DOTALL);
Pattern=Pattern.compile((())(),Pattern.DOTALL);

但是最好使用HTML解析器。

您必须使用选项Pattern.DOTALL用于多行马赫数:

Pattern pattern = Pattern.compile("(<Item>)(.*)(</Item>)", Pattern.DOTALL);
 Pattern pattern = Pattern.compile("(<Item>)(.*)(</Item>)",Pattern.DOTALL);
Pattern=Pattern.compile(“()(.*?)”,Pattern.DOTALL);

量词:?在零次和无限次之间,尽可能少地按需扩展[lazy]

不要使用正则表达式解析XML。使用适当的XML解析器。我使用dom4j,只是想弄清楚如何使用正则表达式。?s意味着什么?它得到了奇怪的结果。
(?s)
用于添加DOTALL标志,这与我上面的第二个选择相同。