我試圖從HTML代碼片段中獲取第一段內容...沒有什麼更容易,是吧?但由於某些原因,.*?
運營商似乎工作貪婪:Java中的正則表達式運算符似乎始終工作貪婪
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test
{
public static void main(String[] args)
{
Pattern regex = Pattern.compile("<p(?: [^>]*)?>(.*?)</p>", Pattern.DOTALL);
Matcher match = regex.matcher("<p class=\"baz\">foo</p> <p>bar</p>");
System.out.println(match.matches());
System.out.println(match.group(1));
}
}
我預計第一款(foo
)只是內容相匹配,但這裏是結果:
$ javac test.java && java test
true
foo</p> <p>bar
任何理由.*?
繼續比賽後首先</p>
?
它在這裏工作https://regex101.com/r/oC3qA3/5 – 2015-03-13 11:27:03
嘗試更換'的System.out.println( match.matches());'用'System.out.println(match.find());' – npinti 2015-03-13 11:29:04
@npinti你爲什麼這麼說? – 2015-03-13 11:29:54