1

我有一个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

4 回答 4

0

在 C# 中,你可以做

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

这将从最后开始匹配。

于 2013-07-23T10:47:14.313 回答
0

怎么样?

<a href="localhost\/(\d+),Test\d*">  <img src="\w+\.gif">
于 2013-07-23T10:48:15.270 回答
0
\d*(?=,.*\.gif)

这匹配之前第一次出现的数字

[comma][other text][.gif]

你可以在这里测试一下。

于 2013-07-23T11:09:29.540 回答
0

如果你坚持为此使用正则表达式,最好有一些边界条件;哪些或多或少相似的文本不应该匹配?

话虽如此,我可能会选择类似的东西

(\d+)[^"\d]+"[^"]+"[^"\d]+\d+\.gif

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

于 2013-07-23T11:26:36.567 回答