MySQL匹配此正则表达式,但它不应该';T

MySQL匹配此正则表达式,但它不应该';T,mysql,regex,Mysql,Regex,我试图识别在标记文本中引用(引用)别人的句子,这是我在MySQL GHTorrent数据集的本地副本中看到的。所以我写了这个查询: select * from github_discussions where body rlike '(.)*(\s){1,}(>)(\s){1,}(.)+'; 它匹配一些不需要的数据,根据这些数据,它不应该与这个特定的正则表达式匹配 测试字符串: `Params` is plural -> contain<s>s</s> `

我试图识别在标记文本中引用(引用)别人的句子,这是我在MySQL GHTorrent数据集的本地副本中看到的。所以我写了这个查询:

select * from github_discussions where body rlike '(.)*(\s){1,}(>)(\s){1,}(.)+';
它匹配一些不需要的数据,根据这些数据,它不应该与这个特定的正则表达式匹配

测试字符串:

`Params` is plural -> contain<s>s</s>
`Params`是复数->包含
在MySQL数据库上匹配,在regex101.com上不匹配

引用但在db处不匹配的明显示例:

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 <notifications@github.com> 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.
是的,我想是这样。\r\n\r\n\r\n\r\nK\r\n\r\n>2014年7月19日17:33,Stefan Karpinski写道:\r\n>\r\n>这是标准的三条款BSD许可证,对吗?\r\n>\r\n>-\r\n>直接回复这封电子邮件或在GitHub上查看。
此外,MySQL工作台并没有显示那些回车符和新行符号,除非复制粘贴在这里

我可以用一些更新查询规范化(删除\r和\n)吗

MySQL正则表达式实现与POSIX标准正则表达式不同吗? 您是否有机会最大限度地解决在降价文本中识别引用的问题


谢谢

你那里有很多家长。从功能上来说,您可以尝试上述方法:

select * from github_discussions where body rlike '.*[:blank:]+>[:blank:]+.+'
然而,我不确定这是你真正想要的。这将很好地匹配这一行:

this is before > and after
据我所知,这不是markdown中引用的字符串。相反,我会在一开始就这样锚定它:

select * from github_discussions where body rlike '^[:blank:]*>[:blank:]+'
这将在行首匹配一个大于号,可以选择前面加空格。这就是你要找的吗

我不确定你的数据是否嵌入了换行符。如果是这样,您可能需要研究让正则表达式使用^archoring符号标识换行符的方法。正如正则表达式文献中公认的结论一样,这是留给学生的练习。:-)