Java 我的正则表达式在尝试提取HTML属性时失败
我试图从一个名为“this”的HTML页面中获取一个值 例: 我试着用Java 我的正则表达式在尝试提取HTML属性时失败,java,regex,Java,Regex,我试图从一个名为“this”的HTML页面中获取一个值 例: 我试着用 Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\""); Matcher match = pat.matcher(sb); if(match.matches()) return match.group(); 但是什么也没有回来。我该怎么办?就像乔普说的那样;使用“查找”: 也注意到你要检索“GROUP(1)”,因为
Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
if(match.matches())
return match.group();
但是什么也没有回来。我该怎么办?就像乔普说的那样;使用“查找”:
也注意到你要检索“GROUP(1)”,因为GROUP()返回了整个模式匹配。
< P>我认为你应该考虑更多的条件,比如name = "this" id = "something" value = 'xxx'
那么您的模式就不能满足诸如“name”和“=”‘xxx’之间的空格以及属性“name”和属性“value”之间的字符串等要求,所以我认为模式应该如下所示:
private final String matchString = "name\\s*=\\s*(?:\"this\")|(?:'this')" +
".*?" +
"value\\s*=\\s*" +
"(?:\"([^\"]*)\") |(?: '([^']*)')";
private final Pattern pattern = Pattern.compile(matchString,Pattern.DOTALL|Pattern.COMMENTS);
Matcher matcher = pattern.matcher(content);
while(matcher.find())
{
System.out.println(matcher.group(1));
}
同时,需要从地板上取小费
find
或匹配((?s)^.*name=\“this\”value=\“(.*?\”*$”)代码>其中(?s)
(DOTALL)接受点(.)的换行符。matches()用于匹配整个文本。
name = "this" id = "something" value = 'xxx'
private final String matchString = "name\\s*=\\s*(?:\"this\")|(?:'this')" +
".*?" +
"value\\s*=\\s*" +
"(?:\"([^\"]*)\") |(?: '([^']*)')";
private final Pattern pattern = Pattern.compile(matchString,Pattern.DOTALL|Pattern.COMMENTS);
Matcher matcher = pattern.matcher(content);
while(matcher.find())
{
System.out.println(matcher.group(1));
}