大家好,
我目前正在使用preg_match,并试图提取一些包含在方括号中的信息。
到目前为止,我已经使用了这个:
/'[(.*)']/
但我希望它只是最后一次出现的内容——或者第一次,如果从结尾开始的话!
在以下内容中:
string = "Some text here [value_a] some more text [value_b]"
我需要得到:
"value_b"
有人能提出一些有用的建议吗?
谢谢
匹配:
/.*'[([^]]+)']/
使用preg_match
(这里不需要_all
版本,因为您只需要最后一个组)并捕获内部的组。
您当前的正则表达式和您的输入将捕获value_a] some more text [value_b
。这里,第一个.*
包含所有内容,但必须回溯才能匹配[
——输入中的最后一个。
如果只需要数字/字母(没有符号),可以将'[(['w'd]+)']
与preg_match_all()
一起使用,并将数组的最后一个作为结束变量。您可以通过在字符类定义中转义来添加任何自定义符号。
'[([^']]*)'][^'[]*$
在regexr 上查看
var someText="Some text here [value_a] some more text [value_b]";
alert(someText.match(/'[([^']]*)'][^'[]*$/)[1]);
括号内的部分存储在捕获组1中,因此需要使用match()1来访问结果。
对于简单的制动,请参阅源代码:Regex,用于获取最后一个括号之间的文本()