如果字符串包含 4 个或更多反斜杠,则匹配正则表达式

Regex to match if string contains 4 or more backslashes

你好,对正则表达式还很陌生,但我很难做到这一点。

我在 Data Studio 中有一个包含页面 URL 的变量。我只需要在 table 中保留一部分页面 - 那些包含 4 个或更多反斜杠的页面:

例如,这些 URL 应该在子集中:

而应排除这些 URL:

我认为像 \/{4,} 这样的东西会起作用,但它似乎 return 没有任何结果

首先,那些是斜杠;反斜杠反斜杠 (\)。这很重要,因为反斜杠在编程语言中以各种句法方式使用,包括正则表达式:在特殊字符前面放置反斜杠会改变其具有的任何特殊功能和正常匹配自身之间的含义。在正则表达式中,/ 并不特殊,所以你不必在它前面放一个反斜杠(除非你使用的语言中正则表达式本身在外面由 /s 分隔整个事情,但由于您使用的是 Google Data Studio,我很确定正则表达式是作为纯字符串输入的。)

其次,正则表达式 /{4,} 仅匹配四个或更多斜杠 ,它们之间没有任何其他内容。所以它匹配 ////,但不匹配 ///hello/,等等。字符串中的所有内容——或者至少,正则表达式匹配的字符串部分中的所有内容——都必须在正则表达式中说明。也许你可以尝试这样的事情:

(?:[^/]*/[^/]*){4,}

这将匹配四个或更多重复的“在 and/or 之前带有一些可选的非斜杠的斜杠”。请注意,这是一个部分正则表达式,专为 REGEXP_CONTAINS; 之类的东西而设计;它与整个字符串不匹配。如果你想把它变成你可以传递给REGEXP_MATCH的东西,只需在它的前后加上一个.*

.*(?:[^/]*/[^/]*){4,}.*

请参阅 https://github.com/google/re2/wiki/Syntax 了解 GDS 在其正则表达式中支持的内容。