regex: (?<!(&(?=#16888;)))#16888(?!((?<=䇸);))
test code(Perl): http://codepad.org/CDiHQRqb
※ 引述《ThiefFan (不务正业的贼)》之铭言:
: /*
: 用php的preg_replace()
: 需要帮 #xxxxx 加连结
: 但原本写法会把 &#xxxx; 也加连结而不能正常显示该字符
: 应该怎么修正才对呢?目前试过的两种写法如下:
: */
: <pre><?
: $a="
: 测试preg #12829
: 有空格 #128 #129 #130
: 没空格#128#129#130
: 要取代#16888
: 但不取代䇸
: ";
: echo preg_replace('/#(\\d+)/', '<a href=de.php?no=\\1>#\\1</a>', $a);
: echo "↑会取代&#";
: echo preg_replace('/(?!&).#(\\d+)/', '<a href=de.php?no=\\1>#\\1</a>', $a);
: echo "↑会吃#前面字符";
: ?></pre>