正则表达式 - 匹配上次发生

时间:2013-08-15 20:58:21

标签: .net regex

我有一个充满名字的文本文件,我希望通过Regex匹配它们。

每个名称以下列文本结尾:fsa fwb fcc,例如:

">Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc

我想使用以下表达式来匹配名称:

""">.+?""fsa fwb fcc"

AKA匹配“> 中的所有文字到 fsa fwb fcc ,然后我可以自己解析匹配的多余内容。

然而,当整个文件中出现“>”时,它会从更早的时候开始匹配。我一直想知道如何匹配最后出现的东西,在这种情况下,“> ,up到最后指定。

2 个答案:

答案 0 :(得分:1)

你可以试试这个: -

.+((fsa|fwb|fcc).+)$

+ 匹配前面的许多字符。

((fsa | fwb | fcc)匹配并捕获关键字。

。+)匹配并捕获字符。

$ 匹配该行的结尾。

编辑: - 正如 m.buettner RegexOptions.RightToLeft所建议的,适用于您的情况。

答案 1 :(得分:0)

描述

看起来你的结尾字符串字面上是fsa fwb fcc,你感兴趣的子字符串的开头直接在结束字符串之前的最后">之后开始。

此表达式将:

  • 找到最后一个">和下一个fsa fwb fcc
  • 之间的子字符串

">((?:(?!">).)*)fsa\sfwb\sfcc

enter image description here

Live Demo

示例文字

">sometext">A Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
">sometext">B Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
">sometext">C Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc

找到匹配项:

[0][0] = ">A Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[0][1] = A Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"

[1][0] = ">B Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[1][1] = B Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"

[2][0] = ">C Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[2][1] = C Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"

或者

如果您想要更进一步,只能从">之前的\u0012捕获到fsa fwb fcc之前的">((?:(?!">).)*?)\\u0012(?:(?!">).)*fsa\sfwb\sfcc ...即实际名称,而不是标记文本,那么看一下这个表达式

">sometext">A Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc ">sometext">B Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc ">sometext">C Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc

enter image description here

Live Demo

示例文字

[0][0] = ">A Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[0][1] = A Dave Smith

[1][0] = ">B Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[1][1] = B Dave Smith

[2][0] = ">C Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
[2][1] = C Dave Smith

找到匹配

{{1}}