简单的正则表达式请求

时间:2010-06-07 05:31:11

标签: regex

我需要一个能在“[url]”和“-8”之间返回文本的正则表达式。

[url]%252FShowOneUserReview-g298570-d301416-
r63722677%26sl%3Dzh%26tl%3Den_US%26hl%3Den_US%26ie%3DUTF-8

它位于<a href/redirect..并与另一个网址结合使用 url=http://translate.google.com/translate[url]

3 个答案:

答案 0 :(得分:1)

当你提出正则表达式问题时,你应该总是澄清你正在使用哪种语言,而你的问题开始时是相当模糊的,但基本上你想要的模式似乎是:

\[url\](.*)-8

这会将您想要的部分捕获到第1组(请参阅rubular.com)。

这如何转化为您的语言可能会有所不同;您可能需要将\加倍,例如Java的。如果这种模式不起作用,那么只需将一些测试字符串添加到rubular中,并明确您的期望,我将与您合作。


另一种可能性

页面中可能有一堆[url]...[/url]“元素”,你只想抓住那些ShowOneUserReview的元素?那么也许你想要的东西(see it on rubular.com):

\[url\]([^[]*ShowOneUserReview[^[]*)\[\/url\]

这会抓取其中包含[url]...[/url]的所有ShowOneUserReview。这不是万无一失的,但除非你对要求非常清楚,否则我们只能猜测你想要做什么。

答案 1 :(得分:0)

以下内容应与[url] ... -8匹配:

\[url\].*-8

答案 2 :(得分:0)

尝试匹配

\[url\](\S+-8)

这将匹配任何非空格字符的运行,直到最后一个-8。我选择\S而不是.,因为否则您可能会匹配太多(超过链接本身)。

使用

可能更安全
\[url\](\S+-8)\b

确保我们不匹配

[url]%252FShowOneUserReview-8

[url]%252FShowOneUserReview-8570-d301416-r63722677%26sl%3Dzh%26tl%3Den_US%26hl%3Den_US%26ie