如何避免匹配太多?

时间:2016-04-26 15:09:47

标签: regex sqlite replace

我有一个HTML字符串:

<li>bmasdas asmdasmdamsd admasmams asmdamsdma asmdamsdasm </li> 
<li> asdmams sdasdasmdamsdma asdmsasdaddamsdasm </li> 
<li> dsadasdasdas TARGET dasdasdsa</li>

我正在尝试使用此正则表达式捕获包含单词“TARGET”的<li>个标记:

<li.*?TARGET.*?\/li>

虽然这确实捕获了我想要的行,但匹配从第一个<li>开始。我怎样才能捕获我想要的标签?

1 个答案:

答案 0 :(得分:1)

您似乎不理解.匹配任何字符,包括<li中的字符。通过更改它,可以解析简单的HTML。

试试这个:<li[^<]*TARGET[^>]*\/li>

不同之处在于我使用了否定的char类,如[^>],以确保它不会捕获标记。请注意,如果存在嵌套标记,则regex不是使用的工具。