从正则表达式php的捕获组中的倒数第二个字符开始

时间:2015-09-04 15:40:15

标签: php regex

我正在尝试创建一个仅在周围字符的倒数第二个到最后一个和最后一个出现之间捕获的正则表达式(如果你理解我的意思)。

到目前为止我的正则表达式是这样的:

\[(.*?)]\{(.*?)\}/ig

这是我的字符串:

[don't touch me] random text [touchme]{Secondcapturegroup}

正如您在此屏幕截图中看到的那样,它正在捕捉从[don't一直到[touchme]的所有内容。我希望它有效地忽略[don't touch me] random text

don'ttouchme

我还在学习正则表达式,但我知道必须有一些东西:)

1 个答案:

答案 0 :(得分:2)

您可以使用排除结束方括号而不是使用.的字符类(这样就不再需要非贪婪量词*?

\[([^]]*)]{([^}]*)}

这样,第一个开口方括号的尝试将失败,因为关闭的方括号后面没有一个开口的花括号。

使用你的模式你得到一个错误的结果,因为正则表达式引擎从左边解析你的字符串并尝试在每个位置成功(所以第一个位置总是赢)。

请注意,i修饰符无用。