簡體   English   中英

Java正則表達式跳過匹配

[英]Java regex skip match

我需要捕獲文本中的所有#字符,除了那些被#[ ... #]包圍的字符。 我編寫了PCRE版本( 在線示例 ),該版本效果很好,但Java不支持(* SKIP)(* FAIL)。

 #\[.*#\](*SKIP)(*FAIL)|#

是否有這個正則表達式的Java等價物? 謝謝。

它使用一個小竅門,以匹配#你不想第一秒,然后休息一個捕獲組匹配:

#\\[.*?#\\]|(#+)

https://regex101.com/r/sU1kR2/1

您將需要提取的第一個捕獲組,以獲得所需#秒。

如果要捕獲每個#不是自定義括號中的一部分,可以從捕獲組中刪除+ ,如下所示:

#\\[.*?#\\]|(#)

此外,如果您可以使用##[text]###[text]# ,那么您可能需要一個環視如下:

#\\[.*?#\\]|(#(?!\\[))

如果您可以使用\\K (但我認為您不能使用Java),則使用以下內容會更簡單,因為您不必擔心捕獲組:

#\\[.*?#\\]\\K|#

暫無
暫無

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

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