我有一个充满名字的文本文件,我希望通过Regex匹配它们。
每个名称以下列文本结尾:fsa fwb fcc,例如:
">Dave Smith\u0012\/a>\u0012\/div>\u0012div class=\"fsa fwb fcc
我想使用以下表达式来匹配名称:
""">.+?""fsa fwb fcc"
AKA匹配“> 中的所有文字到 fsa fwb fcc ,然后我可以自己解析匹配的多余内容。
然而,当整个文件中出现“>”时,它会从更早的时候开始匹配。我一直想知道如何匹配最后出现的东西,在这种情况下,“> ,up到最后指定。
答案 0 :(得分:1)
你可以试试这个: -
.+((fsa|fwb|fcc).+)$
+ 匹配前面的许多字符。
((fsa | fwb | fcc)匹配并捕获关键字。
。+)匹配并捕获字符。
$ 匹配该行的结尾。
编辑: - 正如 m.buettner RegexOptions.RightToLeft所建议的,适用于您的情况。
答案 1 :(得分:0)
看起来你的结尾字符串字面上是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
找到匹配项:
[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
示例文字
[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}}