问题在线显示https://regex101.com/r/vW3vO8/1
我想让ma模式变得更好。它应该获取由代码片段划分的主题字符串的一部分。在示例中,代码片段只是php,js和html行。他们必须分开。
正则表达式:
(\[\/code\].*?\[code[^\]]*?\])
示例字符串:
abc
[code lang='javascript']
var a = 2.5;
[/code]
bcd
[code lang='php']
$this->foo();
[/code]
cde
[code lang='html']
<p clas = 'bar'><span>hello world</span></p>
[/code]
dez
所以正则表达式得到
[/code]
bcd
[code lang='php']
和
[/code]
cde
[code lang='html']
这没关系,但我还需要一开始的部分就是这个
abc
[code lang='javascript']
以及那就是
[/code]
dez
是否可以通过单一的正则表达式模式实现它? 谢谢
答案 0 :(得分:2)
您可以在OR(^
)构造中对字符串的开头($
)和结束(|
)执行匹配:
((^|\[\/code\]).*?(\[code[^\]]*?\]|$))
您可能会发现此变体很有用,它会捕获相同的内容,但标记除外:
(?<=^|\[\/code\])\s*(.*?)\s*(?=\[code[^\]]*?\]|$)
对于样本输入,匹配: