正则表达式找到方括号最后出现的内容

时间:2012-01-05 21:32:46

标签: php regex

大家好,

我目前正在使用preg_match而我正在尝试提取一些信息用方括号括起来

到目前为止,我已经使用了这个:

/\[(.*)\]/

但我希望它只是最后一次出现的内容 - 或者是第一次出现的内容,如果从最后开始!

以下内容:

string = "Some text here [value_a] some more text [value_b]"

我需要得到:

"value_b"

任何人都可以提出一些可以解决问题的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

匹配:

/.*\[([^]]+)\]/

使用preg_match(此处不需要_all版本,因为您只需要最后一组)并在内部捕获该组。

您当前的正则表达式会在您输入的情况下捕获value_a] some more text [value_b。在这里,第一个.*吞下一切,但必须回溯一个[匹配 - 输入中的最后一个。

答案 1 :(得分:0)

如果您只想要数字/字母(无符号),可以将\[([\w\d]+)\]preg_match_all()一起使用,并将最后一个数组作为结束变量。您可以通过在字符类定义中转义它们来添加任何自定义符号。