我希望在字符串中获得foreach($items as $item){
$total = $item->getFinal();
$qtyTotal += $cart[$item->id] * $total;
}
模式的所有匹配。
例如,对于此字符串:
这里有@[SomeText]
一些文字@[text1]
我想要@[text2]
和@[text1]
。
我正在使用Regex Hero检查我的模式在线匹配, 当有一个匹配的表达式时,我的模式工作正常,
例如:
@[text2]
但有一个以上,我得到两个匹配文本在中间。
这是我的正则表达式:
here is @[text1] text
我很感谢帮助隔离事件。
答案 0 :(得分:2)
答案 1 :(得分:1)
这应该有效:
@\[(.*?)\]
详细信息:
(。*?):以非贪婪的方式匹配所有内容并捕获它。
因为*?量词是懒惰的(非贪婪的),它匹配尽可能少的字符以允许整体匹配尝试成功,即text1
。对于从给定位置开始的匹配尝试,延迟量词为您提供最短匹配。
答案 2 :(得分:0)
。*是贪婪的,所以它只找到一个匹配,将“text1”和@ [text2“视为两个方括号之间的文本。
如果在。*之后添加问号,则会在到达之前找到最小字符数。
所以正则表达式\ @ [。*?]做你想做的事。