首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL匹配此正则表达式,但它不应该匹配

MySQL匹配此正则表达式,但它不应该匹配
EN

Stack Overflow用户
提问于 2015-02-24 01:57:36
回答 1查看 68关注 0票数 0

我正在尝试识别在标记文本中引用(引用)某人的else语句,我在我的MySQL GHTorrent数据集本地副本中就有这样的语句。所以我写了这个查询:

代码语言:javascript
复制
select * from github_discussions where body rlike '(.)*(\s){1,}(>)(\s){1,}(.)+';

它匹配一些不需要的数据,根据https://regex101.com/的说法,它不应该与这个特定的正则表达式匹配。

测试字符串:

代码语言:javascript
复制
`Params` is plural -> contain<s>s</s>

在MySQL数据库上匹配,但在regex101 .com上不匹配。

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

代码语言:javascript
复制
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不同?您是否有机会最大限度地干净的解决方案来识别一个标记文本中的引用?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-02-24 02:13:49

你有太多的花边了。按照上面的方法进行功能测试:

代码语言:javascript
复制
select * from github_discussions where body rlike '.*[:blank:]+>[:blank:]+.+'

然而,我不确定这真的是你想要的。这会很好地匹配下面这一行:

代码语言:javascript
复制
this is before > and after

据我所知,它不是标记中的带引号的字符串。相反,我会像这样在开始时锚定它:

代码语言:javascript
复制
select * from github_discussions where body rlike '^[:blank:]*>[:blank:]+'

这将匹配行首的大于号,前面可以有空格。这就是你要找的吗?

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28680216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档