簡體   English   中英

正則表達式 - 匹配不在兩個字符串之間的字符

[英]Regular Expressions - Match Character Not Between Two Strings

我讀過很多問題,詢問如何找到一個正則表達式來匹配兩個字符串之間的字符,但我的問題是相反的。 我試圖創建將兩個字符串之間匹配的字符的表達式。

考慮以下字符串。

This is short & [tag]fun & interesting[/tag].

我想更換任何符號字符與符號標記元素中@。 結果應如下所示。

This is short @ [tag]fun & interesting[/tag].

我嘗試了以下正則表達式,但不幸的是,它與標記元素內的與號匹配。

/(?<!\[tag\])&(?!\[\/tag\])/g

我知道它與該&符號匹配,因為它被字符串兩側的字符包圍。 但是我不能添加隨機數量的字符來檢查,因為lookbehind 和lookahead 必須是固定長度的。

有沒有一個正則表達式可以在這里完成我想要的?

即使使用嵌套標簽,這也能完成工作:

  • 查找: \\[(\\w+)\\].+?\\[/\\1\\](*SKIP)(*FAIL)|&
  • 替換: @

演示和說明

這個怎么運作:

  • \\[(\\w+)\\].+?\\[/\\1\\]正在嘗試將開始和結束標記與內部的一些數據匹配
  • (*SKIP)(*FAIL)如果找到標簽,則丟棄它
  • | 別的
  • &匹配一個&符號。 此時,我們確定它不在標簽內。

不幸的是,這不適用於 Java,但此要求僅在我回答后才添加。

暫無
暫無

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

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