簡體   English   中英

正則表達式-字符串中任何地方都不包含某個字符串

[英]Regular expression - does not contain a certain string anywhere within a string

我希望這不是重復的,我一直在搜索reg ex答案幾個小時,所以我不這么認為!

有沒有一種使用正則表達式進行搜索的方式,說結果在字符串的任何地方都不能包含單詞“ bot”?

我在其他地方使用否定前瞻,但問題是我不知道“機器人”一詞可能出現在哪里。 它可能是一個較長單詞的一部分,可能出現在開頭,結尾或兩者都出現! 我想包括與表達式其余部分匹配的結果,但也要排除“ bot”。

這是我當前的搜索表達式:

2017-0[2-5] (.*) (UserInfo.aspx UID=111 80 -)=(?!10. *)+. * 

我搜索的結果通常如下所示:

2017-02-16 15:56:00 10.3.1.17 GET /UserInfo.aspx UID=111 80 - 157.85.39.17 Mozilla/5.0+(compatible;+bingbot/2.0;++http://www.bing.com/bingbot.htm) 200 0 0 390

理想情況下,我希望將此結果排除在外,因為它包含“ bot”,即使它仍與RegEx的第一部分匹配。

如果可能,將其實施為兩步過程。 例如,如果這是在腳本中,則要進行兩項檢查:一項檢查行是否包含bot,然后進行第二步(如果沒有bot,則執行現有的正則表達式)。

將復雜的匹配要求分解為多個測試通常是一個好主意。 這樣可以使代碼更清晰,並且效率也可能更高,尤其是在早期檢查很簡單的情況下。

分開進行此步驟還可以使您使用更簡單的正匹配而不是負匹配。

偽代碼示例:

if (!string.contains('/bot/') and string.contains('/yourpatternhere/'))
{
    do stuff
}

如果您只限於一個正則表達式,只需在字符串開頭使用負前瞻:

(?!^.*bot)2017-0[2-5] (.*) (UserInfo.aspx UID=111 80 -)=(?!10. *)+. * 

(我在這里忽略了正則表達式的任何其他可能的問題,這似乎不太正確...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM