正则表达式测试,在JavaScript工作,但在谷歌工作表的REGEXEXTRACT
问题描述:
休息我测试过此正则表达式从文本字符串中提取URL:正则表达式测试,在JavaScript工作,但在谷歌工作表的REGEXEXTRACT
(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])
...和它的作品只是因为我想,它匹配我所投的所有网址。
然而,当我使用REGEXEXTRACT在谷歌表是这样的:
=iferror(Regexextract(A1,"(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])"),"")
...什么都没有提取。正则表达式是相同的。
我在做什么错?
注意:正则表达式在这里进行测试:http://www.regextester.com/53716
答
我建议你使用像
=REGEXEXTRACT(B6, "(?:(?:https?|ftps?|file)://|www\.|ftp\.)\S+")
详细一个简单的正则表达式:
-
(?:(?:https?|ftps?|file)://|www\.)
- 无论是在:-
(?:https?|ftps?|file)://
-http
/https
,ftp
/ftps
或file
随后用://
-
|
- 或 -
www\.
-www.
-
-
\S+
- 1或多个非空白符号
+0
非常好!有几个例外,你的正则表达式没有捕获,但它仍然节省了我的工作时间。非常感谢你 :) – user871213
谷歌表[documenation] (https://support.google.com/docs/answer/3098245?hl=zh-CN)陈述: *** Google产品使用[RE2](https://github.com/google/re2/blob/master/doc/syntax.txt)提供正则表达式。 [了解如何使用RE2表达式](https://github.com/google/re2/blob/master/doc/syntax.txt)。*** –
我至少会用'[[因为'-'在角色类中具有特殊含义,所以最好避免在角色类中使用短划线。除非在字符类的末尾(在大多数正则表达式引擎中) – LukStorms
@LukStorms'-'如果放置在字符集的开始或结尾处,则没有特殊含义。 '[-abc]'或'[abc-]'是完全有效的。 –