$re = '/(?: # 采用非捕获括号进行分组(非必要不使用捕获型括号)
```[\s\S]*?``` # 采用非贪婪匹配(必须),匹配0到n次空白或非空白字符(任意字符)
) # 结束第一个分支
| # 或符号
(?: # 同上,采用非捕获型括号
~~~[\s\S]*?~~~ # 同上,非贪婪匹配来匹配0到n次空白或非空白字符
) # 结束第二个分支/mx';
$str = '// 1. 匹配四个空格导出的代码块
functino(asfd)
safdsadf
safsadf
safdsdaf
// 2. 匹配三个反引号所引出的代码块
```
func function(){
}
```
这里是一些文本
……
………………
``` python
print("hello")
```
// 3.如果四个空格之前的一行不是回车独占一行,则不会导出代码块(符合Markdown约定)
functino(asfd)
safdsadf
safsadf
safdsdaf
safd
// 4. 匹配三个波浪号导出的代码块
~~~
fmt.println(123)
~~~
// 5. 匹配前后四个及以上反引号导出的代码块
````
aaa
```
````
这里是一些文本……
`````
print("this is a code block")
`````
// 6. 匹配前后四个及以上波浪号导出的代码块
~~~~
aaa
~~~
~~~~
这里是一些文本……
~~~~~~
print("this is a code block")
~~~~~~
';
$subst = "";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php