2011-06-12 58 views
2

我正在製作一個bot,它給出了在IRC上給出的[[Foo]]等wikilinks的全部鏈接。我想要做的是在匹配之後在[[foo]],[[foo]]之前'[[foo]]','之前'和'之前[[foo]]'之後',而不是'[[ foo]]','[[foo]]'之前'等等,'''是程序中的一種「轉義」字符。到目前爲止,我得到了匹配,除非出現「escape」字符

/[^`]\[\[(.+)\]\]/ 

但是,這不符合「[[foo]]」。如果我添加一個?在否定的角色階層之後,它擊敗了它的目的,並且所有被禁止的角色仍然匹配。

我該怎麼做?

P.S.我想要一個單個正則表達式。

+1

是否反引號逃避反引號? – 2011-06-12 16:36:52

+0

不幸的是,Ruby似乎不支持負向後視,這會使這個微不足道的... – Amber 2011-06-12 16:37:39

+0

你應該使用反引號來清楚你說的是什麼字符串。您的報價/報價不一致,我懷疑它不平衡。 – sawa 2011-06-12 16:51:39

回答

1

只需添加一行的開頭,以替代「的字符不是`」:

/(?:[^`]|^)\[\[(.+)\]\]/. 
+0

哦,我曾想象過,但我不認爲它會起作用。又一次正則表達式的生動的真棒表現。謝謝! – Kudu 2011-06-12 17:02:22