正则表达式不适合我

时间:2016-08-01 13:04:50

标签: regex

我正在尝试制作一个正则表达式来找出第三个分隔符“/”,如果找到匹配,则在它之前抓取整个句子并删除其余部分。

black / white / green / blue / delta / orange / yellow / pink...(n)
结果应该是

black / white / green

我试过这个(.*(\/{2,3})),但它没有用。

2 个答案:

答案 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次出现。