regex - VBScript RegExp 对象中模式的语法是什么?

标签 regex vbscript

我不太熟悉 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/

相关文章:

regex - 如何在从 Postgresql 中的字符串中删除停用词后删除引号和数字

regex - 正则表达式 : repeating groups only getting last group

javascript - 在提交表单之前获取表单选择列表值

excel - 对多个文件运行 Excel 宏

正则表达式使用 grep 匹配尽可能少的次数(惰性)

regex - 正则表达式模式 : alphanumeric(compulsory) , 一些特殊字符(可选)

file - 检查文件是否正在与 VBS 一起使用

vbscript - 字符串不为 null、空或空字符串

excel - 使用 vbscript 在 excel 中创建散点图

javascript - 如何替换正则表达式中的变量