1

我正在寻找匹配正则表达式模式。我知道如果单词开头有任何符号字符( _ 除外),我的代码将不起作用。如何让它匹配以任何符号开头的单词?到目前为止,这是我的代码:


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

4

2 回答 2

0

\b[^\s]+\b没有意义,因为\b 是搜索单词开头或结尾的锚。单词总是 [a-zA-Z0-9_]。

我认为你只能使用类似的东西:

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

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

于 2013-07-17T06:11:14.917 回答
-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 Set objFil = objFso.OpenTextFile(infilename)

strAll = objFil.ReadAll

Set objFil1 = objFso.createtextfile(outfilename)

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

objFil.关闭

objFil2.关闭

于 2013-07-17T13:36:22.123 回答