如何制作非贪婪的正则表达式? “?”似乎不起作用

时间:2014-03-09 02:50:31

标签: java regex

以下是html的内容:

<span style=\"color:red;\">\u7eaa\u51ef\u5a77<\/span>\uff0c\u6709\u6700<span style=\"color:red;\">

我尝试匹配第一个<span style=\"color:red;\">,但是当我的模式是

Pattern.compile("<span .+?style=\\\\\"color:red;\\\\\">");

我将获得所有句子而不是第一句。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

如果我理解您的要求,那么您的问题就在于您的正则表达式

<span .+?style=\\\\\"color:red;\\\\\"?>

在空格和单词“style”之间需要一个或多个字符这使得无法捕获第一个标记,因为我认为这是您的目标。在这种情况下,贪婪,占有欲和不情愿无所谓。

它可能更像是这样:

<span\s+style=\\"color:red;\\">