2015-02-23 67 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:]+' 

这将匹配行开头的大于号,可选地以空格为前缀。那是你在找什么?

我不确定您的数据是否嵌入了换行符。如果是这样,您可能需要研究如何让您的正则表达式使用^锚定符号来识别新行。正如在正则表达文献中被公认的结论一样,被留作为学生的练习。 :-)