匹配正则表达式模式与符号

时间:2013-07-16 14:12:26

标签: regex vba excel-vba excel

我希望匹配正则表达式模式。我知道如果在单词的开头有任何符号字符(除了_),我的代码将无效。如何允许它匹配以任何符号开头的单词? 到目前为止,这是我的代码:


Set objFso = CreateObject("Scripting.FileSystemObject")
Set objRegex = CreateObject("vbscript.regexp")

With objRegex
 .Pattern = "(\nC_PIN\s)((\b[^\s]+\b\s){3})(\b[^\s]+\b\s)(\b[^\s]+\b\s)(\b\d\b\s)"
 .Global = True
Set objFil = objFso.OpenTextFile(infilename)
 strAll = objFil.ReadAll
 Set objFil1 = objFso.createtextfile(outfilename)
 strAll = .Replace(strAll, "$1$2$4 $5 $6 ")
End With

objFil.Close
objFil2.Close

2 个答案:

答案 0 :(得分:0)

\b[^\s]+\b没有意义,导致\b is an anchor搜索单词的开头或结尾。而且这个词总是[a-zA-Z0-9 _]。

我认为你只能使用:

[^a-zA-Z0-9_!"§$%&...][a-zA-Z0-9_!"§$%&...]

你应该插入你允许单词的所有符号字符(在你的解释中)。

答案 1 :(得分:-1)

我设法得到了正确的代码。用于匹配以符号开头的单词的代码是(或负数);

  

设置objFso = CreateObject(“Scripting.FileSystemObject”)

     

设置objRegex = CreateObject(“vbscript.regexp”)

     

使用objRegex

     

.Pattern =“(\ nC_PIN \ s)(\ b [^ \ s] + \ b \ s)([\ S] + \ b \ s)([\ S] + \ b \ s)( \ b [^ \ S] + \ b \ S)(\ b [^ \ S] + \ b \ S)(\ b \ d \ b \ S)“

     

.Global = True       设置objFil = objFso.OpenTextFile(infilename)

strAll = objFil.ReadAll

Set objFil1 = objFso.createtextfile(outfilename)

strAll = .Replace(strAll, "$1$2$4 $5 $6 ")
End With
     

objFil.Close

     

objFil2.Close