0

私が使用している文字列分割ルーチンを短縮するために、正規表現をいじっています。

次のように、asp スクリプトに送信されるカートの文字列があります。

addnothing|-1, addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0, addnothing|-1

2 つの在庫品目を表す 2 つのエントリを抽出できるようにしたいと考えています。

addRST115400112*2xl|0
addRST115400115*xs|0

このコードのビットを機能させることができましたが、使用しているパターンについてはわかりません。

add[^n](.*)\*(.*)\|[0-9],

これはこれを返します:

addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0,

しかし、私はそれを返したいだけです:

addRST115400112*2xl|0
addRST115400115*xs|0

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

0

.Pattern をシンプルに保ち (これは VBScript です!)、それをいじくり回しやすくするようにしています (実際に何が在庫アイテムを選別するのかは決して明確ではありません)。

  Dim sInp  : sInp      = "addnothing|-1, addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0, addnothing|-1"
  Dim reCut : Set reCut = New RegExp
  reCut.Global  = True
  reCut.Pattern = "addR[^|]+\|\d"
  Dim oMTS : Set oMTS = reCut.Execute(sInp)
  If 2 = oMTS.Count Then
     WScript.Echo "Success:", Join(Array(oMTS(0).Value, oMTS(1).Value))
  Else
     WScript.Echo "Bingo:", reCut.Pattern
  End If

出力:

Success: addRST115400112*2xl|0 addRST115400115*xs|0
于 2013-01-31T12:38:28.653 に答える