正则表达式与条件

时间:2011-04-05 22:02:35

标签: regex

我有一个看起来像的字符串:

this is a string [[and]] it is [[awesome|amazing]]

到目前为止,我有以下正则表达式:

(?<mygroup>(?<=\[\[).+?(?=\]\]))

我基本上试图捕捉括号内的所有内容。但是,我需要添加另一个条件:如果匹配的结果包含管道分隔符,则只返回管道分隔符右侧的单词。如果没有管道,则只返回括号内的所有内容。

鉴于上面的示例,我正在寻找的解析结果如下所示:

和 惊人

赞赏任何意见。

3 个答案:

答案 0 :(得分:2)

(?<mygroup>(?<=\[\[)([^|\]]*|)?([^|]+?)(?=\]\]))

答案 1 :(得分:1)

您可以使用此正则表达式:

(?<=\[\[[^\]]*?)(?!\w+\|)\w+(?=\]\])

它匹配测试示例中的andamazing个字词。您可以查看,我在Ideone上创建了一个测试应用。

答案 2 :(得分:0)

来自regex信息页:

  

巨大的力量和表现力   现代正则表达式可以   引诱容易上当的人 - 或者说是蛮干的人    - 试图在每一个上使用正则表达式   他们遇到的与字符串相关的任务。

我的建议:抓住括号之间的内容并在之后解析它。

正则表达式不是一切的答案。愿你那些追随你的人免于破译你提出的正则表达式。

相关问题