BBCode Regex is too greedy when trying to match pattern with a carriage return
我正在使用preg_replace来匹配字符串中的bbcode模式,并将其替换为我自己的html。
我的基本模式如下
现在我要运行它的字符串是:
1 2 3 4 5 6 7 8 9 10 11 | [col=Test] Test [/col] [col=Test2] asd [/col] |
(是的,马车像那样返回。)
现在,如果我只有一个[col]标记,它可以工作A-OK,但是有两个这样的col标记,它只匹配外部标记,并将所有内容放在一个大匹配中,而不是两个单独的匹配中。我认为我的(.+)regex太激进了,但我不知道如何缩小它。如果我做一个简单的(.*?)然后它将与第一个案例中的回车不匹配。
谢谢您!
使用dotall修饰符
1 | (?s)\[col=([^"]+?)\](.+?)\[\/col\] |
演示