2015-02-23 66 views
0

我想識別引用(引用)一個減價文本中的某人,我在我的本地副本MySQL GHTorrent數據集。所以我寫了這個查詢:MySQL匹配這個正則表達式,而它不應該

select * from github_discussions where body rlike '(.)*(\s){1,}(>)(\s){1,}(.)+'; 

它的一些不必要的數據,而根據https://regex101.com/相匹配,它不應該用這種特殊的正則表達式。

測試字符串:

`Params` is plural -> contain<s>s</s> 

匹配的MySQL數據庫上,而不是在regex101匹配點com。引用的

明顯的例子,但在數據庫不匹配:

Yes, I believe so.\r\n\r\n\r\n\r\nK\r\n\r\n> On 19-Jul-2014, at 17:33, Stefan Karpinski <[email protected]> wrote:\r\n> \r\n> This is the standard 3-clause BSD license, right?\r\n> \r\n> —\r\n> Reply to this email directly or view it on GitHub. 

此外,MySQL的工作臺沒有顯示這些回報馬車和新線符號,除非複製粘貼在這裏。

我可以使用某些更新查詢規範化(刪除\ r和\ n)嗎?

MySQL正則表達式實現與POSIX標準正則表達式不同嗎? 你有沒有任何機會最大限度地乾淨的解決方案,以識別降價文本中的報價?

謝謝!

回答

0

你在那兒有很多可怕的東西。試試這個在功能上是否有什麼上面:

select * from github_discussions where body rlike '.*[:blank:]+>[:blank:]+.+' 

不過,我不知道這是你真正想要的東西。這將愉快地匹配這條線:

this is before > and after 

哪些由我的理解是不是在降價引用的字符串。相反,我會像這樣在開始處固定它:

select * from github_discussions where body rlike '^[:blank:]*>[:blank:]+' 

這將匹配行開頭的大於號,可選地以空格爲前綴。那是你在找什麼?

我不確定您的數據是否嵌入了換行符。如果是這樣,您可能需要研究如何讓您的正則表達式使用^錨定符號來識別新行。正如在正則表達文獻中被公認的結論一樣,被留作爲學生的練習。 :-)