将正则表达式转换为可在 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 表格演示:
我想使用在其他情况下有效的正则表达式,但它在 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 表格演示: