【发布时间】:2015-08-06 19:53:07
【问题描述】:
我正在尝试使用正则表达式来检测表中所有行中的 URL,这是正则表达式
\b(([\w-]+:\/\/?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/)))
但是,我总是收到“repetition-operator operand invalid”错误,在互联网上搜索了数小时后,仍然不为人知。 我哪里出错了?我能做些什么来解决这个问题?或者,除了 Regex 之外,还有没有更好的方法来检测 SQL 消息中的 URL?
谢谢。
【问题讨论】:
-
Regexp to validate URL in MySQL 怎么样?它回答了你的问题吗?
-
@stribizhev 我可能需要更复杂的正则表达式,否则不会检测到所有 URL。上面的那个对我很有效,如果我能帮上忙,我想继续使用它。
-
@stribizhev 得到这个重复错误。至于你建议的正则表达式,我试过了,它只检测到我的一小部分网址。
-
看起来问题在于使用
?量词,*?和+?不能在 MySQL 正则表达式中使用。此外,不确定非捕获组,将它们替换为捕获组。请使用[[:<:]](([a-zA-Z0-9-]+:\/\/*|www[.])[^ ()<>]+(\([a-zA-Z0-9_]+\)|([^ [:punct:]]|\/)))重试。 -
@stribizhev 这行得通。但结果只是略有改善。你确定正则表达式根本没有改变吗? (这种新语法让我感到困惑)