2011-01-25 108 views
0

我确信这很简单,但我无法弄清楚。RegEx从自定义标记中提取URL,目标和链接

我想提取此

Example: 
[http://www.testdomain.com/blog/122_Blog Post.aspx _blank]Click here![/] 

的URL,目标和链接我已经试过这样:

\[(.*) (.*)\](.+?)\[\/\] 

它的工作原理,只要我有_blank_self下面的网址,但如果我一起删除它,我会得到Post.aspx作为目标(当然)。

我也试过类似(_blank)?的东西,但那根本不起作用。

请帮忙,RegEx真的不是我的东西,并随时提出其他改进建议。它不一定是万无一失的,我只是想保持简单。

谢谢!

+0

你能否提供更多的例子吗?其他情况下`_blank`或`_self`的位置是什么? – Kimvais 2011-01-25 09:05:08

+0

我不能想象其他很多情况,其他目标并不是必须的。这是一个封闭的系统,所以我不必做到万无一失。只要URL可以包含所有可能的字符,包括空格。 – 2011-01-25 09:18:41

回答

1

试试这个:

\[(.*?)(?: (_blank|_self))?\](.+?)\[\/\] 
+0

谢谢,效果很棒! – 2011-01-25 09:19:00

2
\[(.*?) ?(_[\w\d]+)?\](.+?)\[\/\] 

第一(.*)在你的正则表达式是贪婪的,需要不愿(.*?)

用正则表达式有贪婪,不愿意和占有欲预选赛。贪婪是最常见的,但一些特殊情况需要不情愿或占有欲的限定词。

检查这个环节,以测试正则表达式 http://www.rubular.com/r/lszC0EWaWM