我正在尝试在VB.NET中使用正则表达式 - 尽管语言可能无关紧要 - 我试图从一个非常大的文件名中提取合理的东西,“\\path\path\path.path.path\path\some_more_stuff_from a name.item_123_456.html
”
我想从整个混乱中提取“item_123_456
”
似乎有意义的是,我可以在“.html”这样的模式之前获取所有内容,并从中获取最后一个点之后的所有内容?
我试图至少获得最后一部分(.html之前的整个字符串),但我仍然没有匹配:
Dim matches As MatchCollection
Dim regexStuff As New Regex(".*\\.html")
matches = regexStuff.Matches(strINeed)
Dim successfulMatch As Match
For Each successfulMatch In matches
strFound = successfulMatch.Value
Next
我尝试过的比赛,希望我甚至可以在点和.html
之间得到所有内容:Regex("\\..*\\.html")
也没有返回任何内容。
我无法让正则表达式工作......
答案 0 :(得分:1)
.*\.(.*?)\.html
这会找到尽可能多的字符.*
,直至找到(一个点后跟尽可能少的字符后跟一个点html)(\.(.*?)\.html
)
它将点html和点html之前的点之间的东西放入一个捕获组,该组应该是1美元。如果您需要vb.net代码,我也可能会得到它,但您的代码看起来还不错
您的vb代码应如下所示:
Dim matches As MatchCollection
Dim regexStuff As New Regex(".*\.(.*?)\.html")
matches = regexStuff.Matches(strINeed)
strFound = matches.Item(0).Groups(1).Value.ToString
答案 1 :(得分:1)
它可能会被推广到这个
中[^.\\]+\.html
编辑:或者,需要初始点
\.[^.\\]+\.html