2011-06-12 44 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