0

根据这篇文章,我试图用它^.*(?!http).*$来查找所有不包含字符串的行http,但没有运气。

文本:

"NetworkError: 404 Not Found - http://wap-uat01.webuat.opg/finance/img/arrow.gif"
arrow.gif
GET http://wap-uat01.webuat.opg/site/brknews/xml/focus/focus_finance.xml?dummy=1372124875337
404 Not Found
        19ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/fin/xml/delay/topten/topStock_stock_up.xml?dummy=1372124875339
404 Not Found
        23ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/fin/xml/delay/topten/topStock_stock_down.xml?dummy=1372124875341
404 Not Found
        22ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/fin/xml/hotStock/fin_hotstock_utf8.xml?dummy=1372124875342
404 Not Found
        27ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/fin/xml/delay/index/u_HSI.xml?dummy=1372124875343
404 Not Found
        32ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/fin/xml/delay/index/u_HSCEI.xml?dummy=1372124875345
404 Not Found
        32ms    
xui-2.0.0.js(1221 line)
GET http://wap-uat01.webuat.opg/site/xml/polling.xml?dummy=1372124875346

这个问题有什么想法吗?谢谢。

现场演示: http ://regexr.com?35b85

4

1 回答 1

1

首先,要以您正在寻找的方式对其进行测试,请打开“多行”模式。否则,该^字符表示所有文本的开头。(并且没有 dotall,.*序列不会越过新行,但在多行模式下,您不需要 dotall。)

我认为这个表达式应该做你想要的,但它在那个页面上不起作用(我的猜测是因为突出显示换行符的问题):

^(?!.*?http).*$

但是,它在这里工作:

alert(
    /^(?!.*?http).*$/gm.exec('abhttpc\nq')
)

如果您不想要空行,可以将上面的正则表达式替换为:

^(?!.*?http).+$

这确实显示了您可能正在寻找的结果:http ://regexr.com?35b8h

我们的表达式之间的区别在于,您的表达式允许表达式查找任意数量的不带“http”的字符,然后是任意数量的字符。所以,对于这条线:

"NetworkError: 404 Not Found - http://wap-uat01.webuat.opg/finance/img/arrow.gif"

……你的表情

^.*(?!http).*$

http...会在不立即遇到的情况下尽可能多地进行,即"NetworkError: 404 Not Found -(即,在空格之前停止)并接受它,然后继续执行最终http://wap-uat01.webuat.opg/finance/img/arrow.gif"代码(即,以空格开头的代码),全力以赴到行尾的路。

但是,在我修改后的代码中,它排除了可以在行首之后的任何位置找到“http”的情况,然后,如果不能,它会在结果中包含直到行尾的所有字符(记住检查(?!...)实际上没有消耗任何字符):

^(?!.*?http).+$
于 2013-06-25T03:02:34.207 回答