0
Dim pattern As String = "^[ \t]*(\d+)[ \t]*(#[^#]*#)?[ \t]*(\w+)[ \t]?(.*)$"
Dim sentence As String = "9 #Left# Itema Desc"

For Each match As Match In Regex.Matches(sentence, pattern)
  Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next

のみを返します:

位置 0 に '9 #Left# Item Desc' が見つかりました

Expresso を使用して上記の vb パターンをテストすると、次のように返されます。

1:9

2: #左#

3: イテマ

4: 説明

さらに、この PHP 正規表現は次の 4 つの項目も返します。

preg_match_all('/^[ \t]*(\d+)[ \t]*(#[^#]*#)?[ \t]*(\w+)[ \t]?(.*)$/m', $in, $matches, PREG_SET_ORDER);

私は何を間違っていますか??

前もって感謝します!

アークくんのおかげで、実際に私の問題はグループでした-これが機能するコードです:

Dim pattern As String = "^[ \t]*(\d+)[ \t]*(#[^#]*#)?[ \t]*(\w+)[ \t]?(.*)$"
Dim sentence As String = "9 #Left# Itema Desc"

Dim match As Match = Regex.Match(sentence, pattern)
If match.Success Then
  Console.WriteLine("Matched text: {0}", match.Value)
    For ctr As Integer = 1 To match.Groups.Count - 1
      Console.WriteLine("   Group {0}:  {1}", ctr, match.Groups(ctr).Value)
    Next
 End If
4

1 に答える 1

0

結果は論理的に正しいです。「行全体」の正規表現を記述し、Regex.Matchesメソッドは単一の一致、つまり行全体を見つけました。おそらく必要なのはmatch.Capturesプロパティです:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.group.captures.aspx

于 2013-01-30T02:35:34.620 に答える