chunhaicao 发表于 2012-10-16 15:54

一个PHP正则表达式

在segmentfault看到一个问题:
最近在写一个markdown语法解析程序,我遇到下面这种问题,比如我的加重字体语法是*ABC*,也就是说在字符外侧包含了两个*。我用正则可以很简单的写出表达式来。
但是如果我要加重的字里面就包含了*这个字符,我想用编程语言里的\反斜杠来转义忽略这个匹配,就像这样*AB\*C*。我只要匹配最外侧没有被转反斜杠标记转义的字符,这个用正则怎么写呢?

有一个回答:
$str = '*AB\*C*';
preg_match('/^[^\\\]*\*(.*[^\\\])\*$/isU',$str,$match);

print_r($match);
---------- PHP调试 ----------
Array
(
    => *AB\*C*
    => AB\*C
)

高手来解释下这句正则:
preg_match('/^[^\\\]*\*(.*[^\\\])\*$/isU',$str,$match);

linux_c_py_php 发表于 2012-10-16 17:48

不懂, 这样不就可以匹配了吗?'/^\*(.*)\*$/is'

sickcat2004 发表于 2012-10-17 09:25

:Q:Q:Q:Q复杂的正则着就头晕!

bikong0411 发表于 2012-10-17 09:30

正则是门很优美的语言

yezj2004 发表于 2012-10-17 09:31

谢谢您阿,我非常高兴

chunhaicao 发表于 2012-10-18 13:28

求高手来解释下,另,楼上,您这是高的哪门子兴呢?

maochanglu 发表于 2012-10-20 12:51

/^   [^\\\]*    \*    (.*[^\\\])\*       $   /isU
         ~~~~            ~~

* 在正则里面可以表示数量。0以上。
页: [1]
查看完整版本: 一个PHP正则表达式