0

我需要一些帮助来进行正则表达式匹配以找到两个组。第一个应该匹配 url 中倒数第二个“/”和最后一个“/”之间的单词。第二个匹配应该在“-”之前或最后一个“/”之前找到 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

希望可以理解

谢谢

编辑 问题不是为了找到完整的解决方案,而是更多地获得关于找到我想要找到的特定组的提示 - 但我当然很高兴杰瑞能给我一个解决方案。

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

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

这是我第一次尝试的地方

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

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

4

3 回答 3

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演示

于 2013-10-28T09:35:02.367 回答
0

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

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

正则表达式101演示

于 2013-10-28T09:37:56.740 回答
0

以下正则表达式应该可以工作:

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

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

于 2013-10-28T09:38:18.547 回答