[問題] 要取代#16888 但不取代䇸

看板RegExp (正規表示式 Regular Expression)作者 (不務正業的賊)時間7年前 (2017/01/10 16:40), 7年前編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
/* 用php的preg_replace() 需要幫 #xxxxx 加連結 但原本寫法會把 &#xxxx; 也加連結而不能正常顯示該字元 應該怎麼修正才對呢?目前試過的兩種寫法如下: */ <pre><? $a=" 測試preg #12829 有空格 #128 #129 #130 沒空格#128#129#130 要取代#16888 但不取代&#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> -- #1M3y1tdK #1M4JSnoz

談風月、評聖愚,追隨大智慧,巧奪班門明夜火,救世廣慈悲

好像念起來還挺順的
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.241.104.164 ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1484037642.A.B5C.html ※ 編輯: ThiefFan (210.241.104.164), 01/10/2017 16:41:41

01/10 17:12, , 1F
用 (?<! ) 這個和 (?! ) 類似, 不過是看前面的
01/10 17:12, 1F

01/10 17:13, , 2F
同樣地 (?= ) 的向前看版本是 (?<= )
01/10 17:13, 2F

01/10 17:14, , 3F
啊, 講反了XD 這叫 Lookbehind, 所以是"回頭看"
01/10 17:14, 3F

01/10 17:14, , 4F
這樣就可以去掉中間抓前一個字的 . 了
01/10 17:14, 4F

01/20 21:34, , 5F
感謝!!
01/20 21:34, 5F
文章代碼(AID): #1OT9uAjS (RegExp)
文章代碼(AID): #1OT9uAjS (RegExp)