.net 正则表达式-匹配最后一次出现
我有一个充满名字的文本文件,我想通过正则表达式匹配它们 每个名称以以下文字结尾:fsa fwb fcc,例如:.net 正则表达式-匹配最后一次出现,.net,regex,.net,Regex,我有一个充满名字的文本文件,我想通过正则表达式匹配它们 每个名称以以下文字结尾:fsa fwb fcc,例如: ">Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc 我想使用以下表达式来匹配名称: """>.+?""fsa fwb fcc" AKA匹配从“>到fsa fwb fcc的所有文本,然后我可以自己解析多余的匹配文本 但是,由于“>在整个文件中出现,它从更早开始匹配。我一直想知道如何匹配
">Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
我想使用以下表达式来匹配名称:
""">.+?""fsa fwb fcc"
AKA匹配从“>到fsa fwb fcc的所有文本,然后我可以自己解析多余的匹配文本
但是,由于“>在整个文件中出现,它从更早开始匹配。我一直想知道如何匹配从最后一次发生的事情,在这种情况下,“>,到指定的结尾。您可以尝试以下方法:-
.+((fsa|fwb|fcc).+)$
+匹配前面的许多字符
((fsa | fwb | fcc)匹配并捕获关键字
+匹配并捕获字符
$匹配行的末尾
编辑:-正如m.buettner所建议的那样,应该适用于您的案例。描述
看起来您要结束的字符串实际上是fsa fwb fcc
,并且您感兴趣的子字符串的开头直接在结束字符串之前的最后一个“>
之后开始
此表达式将:
- 查找上一个
和下一个“>
fsa fwb fcc
“>((?:(?!”>)*)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
">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
之前的。。。i、 e.实际名称而不是标记文本,然后查看此表达式
“>((?:(?!”>)*?)\\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
">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
[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
在您的特定情况下,应该这样做。不要用正则表达式解析HTML。naomik所说的。是相关问题的顶部。;)这不是解析,而是模式匹配。考虑到需求,我怀疑这可以通过HTML解析引擎像通过模式匹配一样轻松完成。而且我也不确定\u0012是一个有效的html字符。谢谢m.buettner,Regex.Options.RightToLeft工作得很好!正是我想要的。关于这个Regex的工作原理。@HamZa:-更新了解释。如果不起作用,一定要告诉我!!:)谢谢你的解释,不幸的是,它对我不起作用,而是匹配了整个文件!@stanleyhiggins:-明白了吗r点。也更新了我的答案。这样它也可以作为将来的参考。:)谢谢你的帮助,Rahul!这是一个非常好的解释,非常彻底,非常有效!我非常感谢!