我需要捕獲文本中的所有#
字符,除了那些被#[ ... #]
包圍的字符。 我寫了PCRE版本(online example),它很好用,但Java不支持(* SKIP)(* FAIL)。Java正則表達式跳過匹配
#\[.*#\](*SKIP)(*FAIL)|#
有沒有這個正則表達式的Java等價物?謝謝。
我需要捕獲文本中的所有#
字符,除了那些被#[ ... #]
包圍的字符。 我寫了PCRE版本(online example),它很好用,但Java不支持(* SKIP)(* FAIL)。Java正則表達式跳過匹配
#\[.*#\](*SKIP)(*FAIL)|#
有沒有這個正則表達式的Java等價物?謝謝。
它使用一個小竅門,以匹配你不想先#
秒,然後休息一個捕獲組匹配:
#\[.*?#\]|(#+)
https://regex101.com/r/sU1kR2/1
你需要解壓首先捕獲組以獲得期望的#
s。
如果你想要捕捉的每個個體#
沒有的或定製托架部分,你可以從捕獲組降+
如下:
#\[.*?#\]|(#)
而且,如果你能有這樣的文字##[text]#
,那麼你可能如下需要環視:
#\[.*?#\]|(#(?!\[))
如果你可以使用\K
(但我不認爲你可以在Java),因爲這樣你就不必擔心捕獲組是即使有以下簡單:
#\[.*?#\]\K|#
給你想要一個字符串的例子匹配。 –
@ jamesjelo4kul:我的問題中有一個鏈接。我添加了一些文字以獲得更好的想象力。 – sssss
@anubhava:只需捕捉,然後我可以用Java替換它... – sssss