在PHP中如何使用正則表達式匹配未格式化的@用戶名?

在PHP中如何使用正則表達式匹配未格式化的@用戶名?

php中如何匹配未格式化的@用戶名?

在處理包含用戶標(biāo)記的Markdown文本時,我們常常需要對未被特定格式化的@用戶名進行匹配。本文將探討如何在PHP中編寫正則表達式,以匹配未被格式化的@用戶名,而忽略那些已經(jīng)被正確格式化為[@用戶名](鏈接)的文本。

假設(shè)我們有以下Markdown文本:

$markdownText = <p>我們的目標(biāo)是僅匹配未被格式化的@用戶1,也就是說,不匹配已經(jīng)以[@用戶1](https://www.test.com/space/123)格式呈現(xiàn)的文本。</p><p>為了實現(xiàn)這一目標(biāo),我們需要考慮以下幾個因素:</p><p><span>立即學(xué)習(xí)</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免費學(xué)習(xí)筆記(深入)</a>”;</p><ol><li><strong>未格式化的@用戶名</strong>:我們需要匹配文本中直接出現(xiàn)的@用戶名,例如@用戶1。</li><li><strong>已格式化的@用戶名</strong>:我們需要確保不匹配類似[@用戶1](鏈接)的格式化文本,其中[和]可以包含空格和換行符,@前后也可以有空格,]和(之間沒有空格。</li></ol><p>針對這些需求,我們可以使用以下正則表達式來匹配未格式化的@用戶名:</p>$pattern = '/(?<p>這個正則表達式的詳細解釋如下:</p>
  • (?

  • @[w一-龥]:匹配@后面跟著一個或多個字母、數(shù)字或中文字符。
  • (?![sn]*?][sn]*?():負向后發(fā)斷言,確保@用戶名后面沒有]和(之間的可選空格或換行符。

現(xiàn)在,讓我們將這個正則表達式應(yīng)用于我們的示例文本,并查看結(jié)果:

$markdownText = <p>執(zhí)行這段代碼后,我們會得到以下輸出:</p>Array (     [0] => @用戶1 )<p>正如我們所期望的,僅匹配了未被格式化的@用戶1。通過使用這個正則表達式,我們成功地實現(xiàn)了只匹配未格式化的@用戶名的目標(biāo)。</p>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊7 分享