正则表达式,需要修复

时间:2013-01-29 23:18:13

标签: regex

我尝试编写在<ul class=\"theatre\"></ul>

之间提取值的正则表达式

我写了那个正则表达式:

<ul class=\"theatre\">(\s)*[<>/ =":\._,)(a-zA-Z0-9(\s)ĄĘŚĆŻŹŁÓĆŃąęśćżźłóćń\-]+</ul>

我的问题是,如何修改此正则表达式以通过第一次遇到</ul>标记来结束结果?这是我的例子:

  

http://regexr.com?33j92

应该在<div class=

之前结束

我知道正则表达式不应该用于HTML(我之前已经读过SO)。我只需要这样做,就能理解为什么它没有在</ul>上结束,以及我如何解决它。

3 个答案:

答案 0 :(得分:1)

你必须使用懒惰?修饰符并使用dot-all标志来匹配行尾的点(匹配任何字符)。不应设置“全局”(多重匹配)标志

选中此正则表达式,仅选中web regexp test中的全部点复选框:

<ul\s.*?</ul>

答案 1 :(得分:0)

尝试:

<ul.*?>(.*?)</ul>

答案 2 :(得分:0)

您可以使用

 <ul class="theatre">([\s\S]+?)<\/ul>

例如,在Javascript中,您可以执行

var str = '<ul class="theatre"> bananas </ul>',
    m = str.match( /<ul class="theatre">([\s\S]+?)<\/ul>/ );

if ( m ) {
    console.log( m[1] );    // " bananas "
}