我想寫一個正則表達式,將匹配中的文本字符串,可能是URL的HTML編碼。儘管如此,我仍然有相當多的麻煩。我需要的東西,可以正確下面的字符串匹配中的兩個鏈接:匹配的URL字符串內
some text "http://www.notarealwebsite.com/?q=asdf&searchOrder=1" "http://www.notarealwebsite.com" some other text
什麼,我想會是一個詳細的描述:「HTTP://」後面的任意數目的不空格,引號字符,或字符串「& QUOT [分號]」(我不在乎接受其他非URL安全字符作爲分隔符)
我一直在使用先行檢查&的再用q的跟着嘗試了幾個正則表達式通過將U等,但只要我把一進[^ ...]否定它只是完全分解和評估更像是:「HTTP://後跟任意數量的不空格,引號字符,符號s,q's,u's,o's,t's或者分號「,這顯然不是我正在尋找的。
這將正確地在& QUOT [分號]的開始匹配&的:
&(?=q(?=u(?=o(?=t(?=;)))))
但是,這並不工作:
http://[^ "&(?=q(?=u(?=o(?=t(?=;)))))]*
我知道正則表達式來剛夠惹上麻煩,包括不知道爲什麼這不會按照我想要的方式工作。我在某種程度上瞭解正面和負面的看法,但我不明白爲什麼它在[^ ...]內部崩潰。用正則表達式可以做到這一點嗎?或者我是否浪費時間努力使其工作?
方括號內的內容只能匹配單個字符,例如[a-zA-z]與該組的_one_字符匹配。你可以用^來否定一個組,對。這將匹配沒有被該組描述的任何字符。但是你不能否定其他任何東西,比如整個表達。 – fpw
&(?= q(?= u(?= o(?= t(?=;)))))只匹配單個字符,所以我希望它能夠工作,即使理解只有方括號做一個人物。方括號內的表達式是否會被評估?就像,從字面上看,它只是單獨看每個角色,甚至不會注意到它們形成了一個表達式? – Dave
對,括號實際上只能包含字符的枚舉,^和 - 只是語法糖,所以你不必爲[a-z]寫[abcdef ...]。所以你的表達式不會被評估,它只是匹配任何不是^之後提到的字符的東西。 – fpw