我正在尝试识别在标记文本中引用(引用)某人的else语句,我在我的MySQL GHTorrent数据集本地副本中就有这样的语句。所以我写了这个查询:
select * from github_discussions where body rlike '(.)*(\s){1,}(>)(\s){1,}(.)+';它匹配一些不需要的数据,根据https://regex101.com/的说法,它不应该与这个特定的正则表达式匹配。
测试字符串:
`Params` is plural -> contain<s>s</s>在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.此外,MySQL工作台不会显示这些回车符和换行符,除非在此处复制粘贴。
我可以使用一些更新查询来规格化(删除\r和\n)吗?
POSIX实现是否与MySQL标准regex不同?您是否有机会最大限度地干净的解决方案来识别一个标记文本中的引用?
谢谢!
发布于 2015-02-24 02:13:49
你有太多的花边了。按照上面的方法进行功能测试:
select * from github_discussions where body rlike '.*[:blank:]+>[:blank:]+.+'然而,我不确定这真的是你想要的。这会很好地匹配下面这一行:
this is before > and after据我所知,它不是标记中的带引号的字符串。相反,我会像这样在开始时锚定它:
select * from github_discussions where body rlike '^[:blank:]*>[:blank:]+'这将匹配行首的大于号,前面可以有空格。这就是你要找的吗?
我不确定您的数据是否嵌入了换行符。如果是这样,您可能需要研究如何让您的正则表达式使用^锚定符号识别换行符。正如正则表达式文献中公认的结论一样,这是留给学生的练习。:-)
https://stackoverflow.com/questions/28680216
复制相似问题