2017-11-15 5 views
2

私はこれを理解できないようです。私は、あなたが文字クラスに+を追加する必要があり、「市場価値」VBScript RegExp with Characters +または -

Function removeScenarioTags (strtoclean) 
    Dim objRegExp, outputStr 
    Set objRegExp = New Regexp 

    objRegExp.IgnoreCase = True 
    objRegExp.Global  = True 
    objRegExp.Pattern = " ?\([0-9a-zA-Z ]+\) ?"   

    Set objMatch = objRegExp.Execute(strtoclean) 
    corrected_row = strtoclean 
    For Each myMatch in objMatch 
     matched_value = myMatch.Value     
     corrected_row = replace(corrected_row, matched_value, "") 
    Next 
    removeScenarioTags = corrected_row 
End Function 

'----------------MAIN------------------------------------------ 

after_clean = removeScenarioTags("Market Value (steep+50)") 
msgbox after_clean 
+0

文字クラスに '+'を追加する必要があります: 'objRegExp.Pattern ="?\([0-9a-zA-Z +] + \)? "' – Jan

+0

ありがとう1月 – mickeym1970

+0

答えとしてそれを加えました。 – Jan

答えて

2

を吐き出すために、以下の必要があります。

objRegExp.Pattern = " ?\([0-9a-zA-Z+]+\) ?" 

a demo on regex101.comを参照してください。

2

あなたは0+空白で囲まれた括弧以外の内部の任意の文字と括弧にマッチする正規表現を使用して、正規表現ベースの交換を、簡素化、および直接RegExp.Replace方法との一致を削除することがあります。

Function removeScenarioTags(strtoclean) 
    Dim objRegExp, outputStr 
    Set objRegExp = New Regexp 

    objRegExp.IgnoreCase = True 
    objRegExp.Global = True 
    objRegExp.Pattern = "\s*\([^()]+\)\s*" 

    removeScenarioTags = objRegExp.Replace(strtoclean, "") 
End Function 

を参照してください。 \s*\([^()]+\)\s* regexデモ

詳細

  • \s* - 0+空白
  • \(から(
  • [^()]+から1又はそれ以上の(0以上に一致するように*置き換える)()
  • 以外の文字
  • \) - a )
  • \s* - 0+空白

(注)この正規表現で、objRegExp.IgnoreCase = Trueは意味のある何もしませんし、除去することができます。