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 に答える