2017-07-25 6 views
0

私は、Microsoft VBScript Regular Expressions 5.5へのVBAプロジェクト参照を含むMicrosoft Access 2007データベースでRegexを使用しています。VBやJavaなどの言語で使用される「トリム」関数の正規表現とは何ですか?

すべてがよく...ほとんどです。私は 'Trim'関数のように振る舞う正規表現を知りたいですか?

私はこれを持っています:(?:。?)*)これは "最後の試合の後にすべてをキャプチャする"ことです。しかし、私は削除したい余分なスペースに常にマッチします。

以下に関連するコードを示し、その後にデバッガのスクリーンショットを示します。部分集合の項目4には「CAN」があります。どのように正規表現でスペースを削除するので、私はトリム関数を使用する必要はありません..?

pattern = "^(\d{1,2})(?:\/)(\d{1,2}(?:\.\d{1,3})?)(OZ)((?:.?)*)" 
regex.pattern = pattern 
Set matchCollection = regex.Execute(workstring) 
If matchCollection.Count > 0 Then 
    matchSection = "LOOSE CASES" 
    itemtype = "CASE" 
    percase = matchCollection(0).SubMatches(0) 
    perpack = 1 
    unitsize = matchCollection(0).SubMatches(1) 
    uom = matchCollection(0).SubMatches(2) 
    other = VBA.Trim(matchCollection(0).SubMatches(3)) 
End If 

... debugger

+1

私はそれが '^ \ s + | \ s + $'だと思います。 –

+0

@mikeそして空の文字列にマッチするポイントは何ですか? '\ s *'はマッチング(何のための空文字列ですか?)や置き換え(空文字列を空文字列に置き換える点は何ですか?)の意味もありません。 –

+0

これは余白の余分な部分を突き合わせるためのものです。例えば、末尾の空白やキャリッジのいずれかが文字列の最後に戻る。より論理的な選択肢は\ s +かもしれないので、空白は1つまたは複数のものではなく、何も一致しない点が何であるかという理由からです。しかし、私は複雑な表現のいくつかのケースでは、* over +を使うという選択がよりシンプルになるかもしれないと思います。 – spinjector

答えて

0

[OK]を、私はついにそれを考え出しました。私の元の正規表現(?:。?)*)は、 "最後の試合の後に残ったものをすべて捕捉"することを意図しています。しかし、先導的なスペースである&も獲得しました。

先頭のスペースを削除するのはかなり簡単でしたが、末尾のスペースを削除しようとすると、グループ内の*が削除されました。それから私は約\ bを読んで1つを落として、今それは動作します。

これは、「?:?」((?:?))*)\ b(?: *)です。「先頭または末尾のスペースを除いて、

コンテキストでは、これは、その全体が...

(\ D {1,2})/(\ D {1,2})PK - (\ dの{1,2} (?:?)*)\ b(?:*)

これは、このような文字列...

2/12PK-11.125OZは、私たちの倉庫でのビールの例を説明し

を... RETことができます。 = - )

関連する問題