我尝试使用js regex获得以下内容:
string</span>string</span>string</span>theStrngIWant
在一句话中,我尝试在最后</span>
我尝试了这种模式/<\/span>((.|\n)*)/i
,我知道模式不起作用我只是想展示我想要捕捉的内容:
所以在最后</span>
之后我想要捕获.
令牌中包含的任何内容,并且因为它不包含我添加\n
的新行,我认为没有{greedy可以使用{ {1}}因为它无论如何都是字符串的结尾,还要注意我确实尝试过负面预测。
如果有人知道这个案例的任何正则表达式,我将非常感激。
答案 0 :(得分:2)
首先,如果您决定使用正则表达式为任何生产/重要代码解析HTML,那么您会遇到麻烦。
也就是说,对于非批评粗略的编辑目的,HamZa的模式运作得很好。这是一个经过测试的JavaScript函数形式的稍微复杂,但更有效的模式:
function processText(text) {
/* # Capture in $1, everything following last SPAN element.
<\/span\s*> # Last SPAN close tag.
( # $1: Everything after last SPAN.
[^<]* # Zero or more non start-of-tag chars.
(?: # Zero or more non-SPAN tags.
< # Allow start of any HTML tag, but
(?!\/?span\b) # only if not start a SPAN tag.
[^<]* # Zero or more non start-of-tag chars.
)* # End zero or more non-SPAN tags.
) # End $1: Everything after last SPAN.
$ # Anchor to end of string.
*/
var re = /<\/span\s*>([^<]*(?:<(?!\/?span\b)[^<]*)*)$/i;
var m = text.match(re);
return (m) ? m[1] : '';
}
还在自由间隔模式下呈现正则表达式(作为多行注释),其中缩进和注释描述每个一口大小的正则表达式块。
有关如何编写好的正则表达式的更多信息,我建议您阅读以下内容:regular-expressions.info/。如果您想成为一名正则表达式大师,那么您可以通过以下方式获得良好的服务:Mastering Regular Expressions (3rd Edition)