dousi4257 2013-12-27 07:33
浏览 55
已采纳

使用正则表达式捕获时如何忽略单词?

I have this string:

$text = "What's your #name ?"

And I have this code capturing 'name' and '039':

preg_replace("/\B#(\w+)/", "<a href='url'>#$1</a>", $text);

Any idea about how to capture 'name' but not '039'?

  • 写回答

2条回答 默认 最新

  • douban5644 2013-12-27 07:47
    关注

    Use a negative lookbehind:

    echo preg_replace("/(?<!\S)#(\w+)/", "<a href='url'>#$1</a>", $text);
    

    Regex autopsy:

    • (?<!\S) - A negative lookbehind - to assert that the # is not preceded by a non-whitespace character
    • # - matches the # character literally
    • (\w+) - first capturing group

    Regex101 demo.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)