我有一些这样的文字:
dagGeneralCodes$_ctl1$_ctl0
Some text
dagGeneralCodes$_ctl2$_ctl0
Some text
dagGeneralCodes$_ctl3$_ctl0
Some text
dagGeneralCodes$_ctl4$_ctl0
Some text
我想创建一个正则表达式,从上面的文本中提取最后一次出现的dagGeneralCodes $ _ctl [number] $ _ ctl0。 结果应该是: dagGeneralCodes $ _ctl4 $ _ctl0
提前致谢
瓦埃勒
答案 0 :(得分:3)
这应该这样做:
.*(dagGeneralCodes\$_ctl\d\$_ctl0)
前面的.*
是贪婪的,所以最初它会抓取整个输入字符串。然后它会回溯,直到找到你想要的文本的最后一次出现。
或者你可以找到所有的比赛并保留最后的比赛,这就是我的建议。
此外,根据您正在使用的语言,可能需要提供具体的建议。例如,在Java中,您需要使用DOTALL
模式与.
匹配换行符,因为通常不会。其他语言称之为多线模式。 Javascript的解决方法略有不同,等等。
答案 1 :(得分:1)
您可以使用:
[\d\D]*(dagGeneralCodes\$_ctl\d+\$_ctl0)
我正在使用[\d\D]
代替.
来使其与新线匹配。 *
以greedy
方式使用,因此它将消耗除dagGeneralCodes$_ctl[number]$_ctl0
的最后一次出现以外的所有内容。
答案 2 :(得分:0)
我真的很喜欢使用这个Regular Expression Cheatsheet;它是免费的,单页,并打印,适合我的立方体墙。