0

我正在尝试在 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")也没有返回任何内容。

我只是无法让正则表达式工作......

4

2 回答 2

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
于 2012-07-10T21:54:56.550 回答
1

大概可以概括为

[^.\\]+\.html

编辑:或者,需要初始点

\.[^.\\]+\.html
于 2012-07-10T21:58:41.983 回答