2016-06-24 7 views
3

私はVBスクリプトに慣れておらず、regexpオブジェクトのパターンプロパティの構文に問題があります。VBScript RegExpオブジェクトのパターンの構文は何ですか?

私はこのようになりますいくつかのデータがあります。続行する前に

フロントSHDトリップCLEAR閉塞[テーブル位置を= 0mmFwd]フロントSHDの旅CLEAR閉塞続行する前に、[表 ポジション= 563mmFwd]

これらのレコードから[Table Position = x]部分を取り除きたいので少し機能を作りました。エラーがないものの、期待どおりには、文字列の終わりをはがしていないと私は、問題は、この行で私の構文であることをかなり確信している:

objRegExp.Pattern = "[*]"

ここでは全体の機能です:

は、
Function RemoveTablePosition(AlarmText) 

'Initialise a new RegExp object 
Dim objRegExp, strNewAlarmText 
Set objRegExp = New Regexp 

'Set the RegExp object's parameters 
objRegExp.IgnoreCase = True 
objRegExp.Global = True 

'Look for [Table Position = xx] at the end of the code text (they always follow the same format) 
objRegExp.Pattern = "[*]" 

'Replace all [Table Position = xx] with the empty string to effectively remove them 
strNewAlarmText = objRegExp.Replace(AlarmText, "") 

'Return the new alarm text value 
RemoveTablePosition = strNewAlarmText 
Set objRegExp = Nothing 

End Function 

誰かが正しい方向に向かうことができますか?前もって感謝します!

+1

あなたは '\ [[^ \] [] *]が必要です。 '' \ [[^ \] [] *] $ '(' $ ' - 文字列/行末) –

答えて

2

"[*]"は、*リテラル文字に一致する文字クラスです。

あなたは

\[[^\]]*]$ 

または

\[.*?]$ 

を使用することができますがregex demoを参照してください。 [...]の前にオプションの空白をマッチさせる必要がある場合は、パターン開始時に\s*を追加してください。

説明

  • \[ - リテラル[シンボル
  • [^\]]* - (なし[]存在しないことができれば、[^\][]*とこれを置き換える)]以外ゼロ以上のシンボル
    OR
  • .*? - 最初までできるだけ少ない改行以外の任意の0+文字...
  • ] - ...
  • $であるリテラル]記号 - 文字列の最後

\[[^\]]*]$\[.*?]$の違いは、前者が[](存在する場合)の間の改行と一致し、\[.*?]$の改行も一致しないことです。

+2

鮮やかなものです。そのリンクも素晴らしい - 非常に便利なツールです。 –

+1

はい、regex101は、ESCMAScript 5正規表現をデバッグする必要がある場合に役立ちます。同様にPCREとPythonのもの:) –

0

"CONTINUING"の後のスペースも取り除きたい場合は、 "\ [。* \] $」

これはスペース、左括弧、任意の数の文字、文字列の右ブラケットと終わりを探し

右ブラケットは、たとえば、文字列の終わりではない場合:

テスト文字列[REMOVE [THIS]して続行]

それはとのマッチング維持します。*は、それが見つかるまで\] $($文字列の末尾であること。)

Wiktorの例は良いですが、 "\ [[^ \]] *] $"が壊れています - 彼は "\ [[^ \]] * \] $"を意味すると思います。最初の右括弧で止まるので、上記の例は一致しません。

彼の2番目の例「\ [。*?] $」は、おそらく "\ [。+ \] $"括弧内に何かがあることを確かめたいと思っています。
(?0以上を探します*、0または1を探し、+ 1以上を探します)

使用する

(もっとエレガント "の\ [を。* \] $" これはその仮定をしないと。 "。*"は任意の文字の0個以上にマッチします。\ [と\]で囲まれたものは、大括弧で囲まれた文字列の末尾に$が付いています。誰かを助ける - 私は返信する前に日付を書き留めたが、壊れた正規表現を見た。 Wiktorの例は、彼が投稿するまでうまくいっていたかもしれません...(実際より可能性が高い)。

関連する問題