1

これはおそらく、正規表現の経験がある人にとっては簡単な質問ですが、少し問題があります。以下に示すようなデータ行を一致させたいと考えています。

SomeAlpha テキスト CrLf CrLf 15 CrLf CrLf 123 132 143 CrLf CrLf 12313 CrLf CrLf 12/123

は、スペースと場合によって"SomeAlpha Text"は句読点を含む単なるテキストです。最初の数字は 1 から 30,000 の間です。2 番目の数値セット (123 132 143) は、1 から 500,000 (各数値) の間です。次の数字は 1 から 500,000 の間です。最終セットは (1–30,000)/(1–30,000) です。これは私がこれまでにまとめたコードです:

Dim Pattern As String = "[.*]{1,100}" & vbCrLf & "" & vbCrLf & "[0-9]{1,4}" & vbCrLf & "" & vbCrLf & "[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]" & vbCrLf & "" & vbCrLf & "[0-9]{1,6}" & vbCrLf & "" & vbCrLf & "[0-9]{1,5}/[0-9]{1,5}"

For Each match As Match In Regex.Matches(WebBrowser1.DocumentText.ToString, Pattern, RegexOptions.IgnoreCase)

        RichTextBox1.AppendText(match.ToString & Chr(13) & Chr(13))

Next

そして、少なくとも 1 つの一致が必要であることはわかっていますが、現在 0 の一致を取得しています。私のパターンがどこで間違っているかについてのアドバイスは素晴らしいでしょう! ありがとう。

4

1 に答える 1

0
"[.*]{1,100}" & vbCrLf & "" & vbCrLf & "[0-9]{1,4}" & vbCrLf & "" & vbCrLf & "[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]" & vbCrLf & "" & vbCrLf & "[0-9]{1,6}" & vbCrLf & "" & vbCrLf & "[0-9]{1,5}/[0-9]{1,5}"

かなりの問題があります:

  • *inは、前の"[.*]{1,100}"文字をできるだけ多く繰り返すように指示するため、不要です。".{1,100}"またはに置き換えます".*"
  • 最初の数字は 0 から 30000 の間"[0-9]{1,4}"です。4 桁 (0 から 9999) しか使用できません。これを に置き換えます"[0-9]{1,5}"。これにより、0 から 99999 までの任意の数値が許可されます。
  • この部分の 3 か所に誤って を入れてしまいまし]た: . に置き換えます}"[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]""[0-9]{1,6} [0-9]{1,6} [0-9]{1,6}"

私が上で言ったことをやってみてください。正しく動作するはずです。

于 2013-12-01T13:57:27.770 に答える