我不太熟悉 VB 脚本,并且在使用我的 regexp 对象的 pattern 属性的语法时遇到了问题。
我有一些看起来像这样的数据:
Front SHD Trip CLEAR OBSTRUCTION BEFORE CONTINUING [Table Position = 0mmFwd] Front SHD Trip CLEAR OBSTRUCTION BEFORE CONTINUING [Table Position = 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
有人能指出我正确的方向吗?提前致谢!
最佳答案
"[*]"
是匹配 *
文字字符的字符类。
你可以使用
\[[^\]]*]$
或
\[.*?]$
参见 regex demo .如果您还需要匹配 [...]
之前的可选空格,请在模式开头添加 \s*
。
解释
\[
- 文字[
符号[^\]]*
- 除了]
之外的零个或多个符号(如果没有[
和]
, 把这个替换成[^\][]*
)
或.*?
- 0+ 除换行符外的任何字符,尽可能少,直到第一个...]
- 文字]
符号,位于...$
- 字符串结尾
\[[^\]]*]$
和 \[.*?]$
的区别在于前者还会匹配 之间的换行符>[
和 ]
(如果有)和 \[.*?]$
不会。
关于regex - VBScript RegExp 对象中模式的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013018/