正则表达式从上次出现开始匹配

时间:2013-07-23 10:43:53

标签: regex

我有一个HTML代码:

<a href="localhost/1153,Test">  <img src="test.jpg">
(...)
<a href="localhost/1191,Test8">  <img src="test2.jpg">
(...)
<a href="localhost/9838,Test">  <img src="13.gif">
(...)

想要在gif之前匹配一个值,在这个例子中是9838.无论我如何尝试,我最终都会得到第一场比赛(1153)。如何匹配已知模式的“向后”?

4 个答案:

答案 0 :(得分:0)

在C#中,你可以做到

Match theMatch = Regex.Match(source, pattern, RegexOptions.RightToLeft);

将从最后开始匹配。

答案 1 :(得分:0)

怎么样?

<a href="localhost\/(\d+),Test\d*">  <img src="\w+\.gif">

答案 2 :(得分:0)

\d*(?=,.*\.gif)

匹配

之前的第一个数字出现
[comma][other text][.gif]

您可以测试此here

答案 3 :(得分:0)

如果你坚持使用正则表达式,那么有一些边界条件会很好;或多或少相似的文字不应该匹配?

话虽如此,我可能会选择像

这样的东西
(\d+)[^"\d]+"[^"]+"[^"\d]+\d+\.gif

并提取第一个带括号的子匹配(假设[^\d]既不匹配你的语言中的换行符也不匹配数字;我对它不太熟悉。)

相关问题