将正则表达式转换为可在 Google 电子表格中使用的 re2?

Convert regular expression into re2 that works in Google Spreadsheets?

我想使用在其他情况下有效的正则表达式,但它在 Google 表格中不起作用。

Google 表格需要 re2 表达式,我不知道如何正确设置格式。 (我已经在 Whosebug 上阅读了很多问题,但不幸的是我被卡住了。)

我想转换以下表达式:

\w++\-?+\w*+\.\w++\/

该表达式旨在执行以下操作。 从给定的 URL 中提取域名。例如:

from: https://www.tag24.de/dresden/ 
get: tag24.de/

from: https://de.nachrichten.yahoo.com/wohnen-hamburg-bezirk-f
get: yahoo.com/

from: https://www.hitradio-rtl.de/beitrag/hier-leben
get: hitradio-rtl.de/

如有任何建议或帮助,我们将不胜感激。

问题是所有格量词是 not supported in RE2:

Possessive repetitions:
x*+   zero or more «x», possessive NOT SUPPORTED
x++   one or more «x», possessive NOT SUPPORTED
x?+   zero or one «x», possessive NOT SUPPORTED
x{n,m}+   «n» or ... or «m» «x», possessive NOT SUPPORTED
x{n,}+    «n» or more «x», possessive NOT SUPPORTED
x{n}+ exactly «n» «x», possessive NOT SUPPORTED

你可以使用

=REGEXEXTRACT(A1, "\w+(?:-\w+)?\.\w+(?:/|$)")
=REGEXEXTRACT(A1, "\w[\w-]*\.\w+(?:/|$)")

如果您想排除最后的 /,请使用捕获组:

=REGEXEXTRACT(A1, "(\w+(?:-\w+)?\.\w+)(?:/|$)")
=REGEXEXTRACT(A1, "(\w[\w-]*\.\w+)(?:/|$)")

详情:

  • \w+ - 一个或多个单词字符
  • (?:-\w+)? - - 和一个或多个单词字符
  • 的可选出现
  • \. - 一个点
  • \w+ - 一个或多个单词字符
  • (?:/|$) - / 或字符串结尾。
  • \w[\w-]* - 一个单词 char,然后是零个或多个单词或连字符(如果您不关心第一个单词 char 之后可以有多少个连字符,或者是否可以有几个连续的连字符,这很好连字符)。

当在正则表达式中使用捕获组时,REGEXEXTRACT 仅返回其内容。

查看 Google 表格演示: