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标志,这与我上面的第二个选择相同。