我正在尝试制作一个正则表达式来找出第三个分隔符“/”,如果找到匹配,则在它之前抓取整个句子并删除其余部分。
black / white / green / blue / delta / orange / yellow / pink...(n)
结果应该是
black / white / green
我试过这个(.*(\/{2,3}))
,但它没有用。
答案 0 :(得分:3)
您的<body>
<div>
<img src="" alt="" />
<img src="" alt="" />
<img src="" alt="" />
<img src="" alt="" />
</div>
</body>
匹配任何字符(可能不是换行符),然后匹配2或3个(.*(\/{2,3}))
符号,将整个匹配捕获到组1中,并将正斜杠捕获到组2中。在较大的字符串中的任何地方找到匹配项,但它只是从字符串的开头到行上的最后2或2个/
符号有效匹配。
您可以使用
/
并替换为^((?:[^\/]*\/){3}).*
反向引用。
请参阅regex demo
根据输入和正则表达式引擎的不同,您可能还需要$1
的DOTALL修饰符来匹配换行符。
请注意,您可以使用更简单的.
来匹配您的子字符串。
此外,如果您可以访问原始编程代码,则可以使用^((?:[^\/]*\/){3})
拆分字符串,获取前3个元素,然后使用/
将它们连接起来。
答案 1 :(得分:1)
试试这个:
^(( ?\w+ \/){3})
说明:
(?\ w + /) - 它匹配 white /(_是空格,只是标记在这里),但由于第一个单词位于行的开始处,因此它之前不包含空格字本身,所以'?'在第一个空格之后,这意味着可选。 {3}表示找到此组白色 /发生3次(不少,不大) 所有这些都用^()括起来与f.e不匹配。在线的中间3次出现。