簡體   English   中英

這個正則表達式意味着什么:(?![#$])

[英]What does this regular expression mean: (?![#$])

有人能給我一個例子/解釋這個正則表達式的作用:

(?![#$])

這是<%(?![#$])(([^%]*)%)*?> ,這是ASP.NET用來解析服務器端代碼塊的部分。 我理解表達式的第二部分,但不是第一部分。

我檢查了文檔並發現(?! ...)意味着零寬度負向前瞻,但我不完全確定我理解這意味着什么。 到目前為止,我嘗試過的任何看起來像<% ... %>似乎都有用 - 我想知道為什么第一個子表達式就在那里。

編輯:我想出了這個表達式來獲取ASP.NET表達式: <%.+?%>然后我找到了微軟制作的那個(上面的完整表達式)。 我試圖理解為什么當我看起來更簡單時他們選擇了那個特定的表達方式。 (我試圖看看我的表達式是否忽略了MS沒有的某些邊界條件。)

如果下一個字符不是#$ ,但是不消耗它,那么這是一個負向前瞻斷言

負字符類[^#$]非常類似,但負字符類也會消耗該字符,從而阻止它與表達式的其余部分匹配。

要查看差異,請考慮匹配<%test%>

  • 表達式<%(?![#$])(([^%]*)%)*?>捕獲test% (rubular)
  • 表達式<%[^#$](([^%]*)%)*?>捕獲est%因為負字符類消耗了t (rubular)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM