正则表达式匹配第二个最后正斜杠和结束数字之间的单词

时间:2013-10-28 09:29:49

标签: regex

我需要与正则表达式匹配的som帮助才能找到两个组。第一个应匹配url中第二个最后一个“/”和最后一个“/”之间的单词。第二个匹配应该在“ - ”之前或最后一个“/”

之前找到网址末尾的数字

示例:

1. <a href="/damm/test1/1-4-5-34.html">Test 1</a> 
2. <a href="/damm/test1/test2/22-33-456.html">Test 2</a> 
3. <a href="/damm/test1/test2/test3/2345.html">Test 3</a>

其中 1 匹配组1 == test1 和组2 == 34
其中 2 匹配组1 == test2 和组2 == 456
3 匹配组1 == test3 和组2 == 2345

希望这是可以理解的

谢谢你

修改 问题不在于找到完整的解决方案,而在于获取有关找到我想要找到的特定群体的提示 - 但是当然我很高兴Jerry可以给我一个解决方案。

对不起,我没有发布我已经尝试过的工作,所以这里是:

我正在使用gskinner RegExr进行测试,现在可以在此网站上为您提供示例http://regex101.com/r/zB3oZ6

这是我第一次尝试的地方

href="(.*?)(\d*).html\"

通过查找数字可以正常工作 - 但是当我想要获取文本时,它就会全部崩溃。我会在将来尝试查看此内容:http://www.regular-expressions.info/tutorial.html

3 个答案:

答案 0 :(得分:0)

这个有效:.*/(.*)/.*-?([0-9]+).*

您可以在shell中使用它:

echo "<a href="/damm/test1/1-4-5-34.html">Test 1</a>" | sed -r "s;.*/(.*)/.*-?([0-9]+).*;\1 \2;"

cf demo

答案 1 :(得分:0)

你可以使用类似的东西......

href=".*?/([^/]*)/[^/]*?([0-9]+)[^0-9]+"

regex101 demo

答案 2 :(得分:0)

以下正则表达式应该有效:

([^/]*)\/(?=[^/>]*>).*?([^.-]+)\.

现场演示:http://www.rubular.com/r/jWD8VwkDWy