regex 正则表达式和嵌入的特殊字符

pqwbnv8z  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在使用VBScript,并有一个字符串,我正在从一个文件中阅读,一个例子将是“ab$cd\ef”。
我使用正则表达式将“c”替换为“xyz”。这工作得很好。
但是替换模式是由用户输入的-并且他们可能决定他们想用“xyz”替换“b$”。问题是“b$”意味着“在字符串末尾找到一个”b“字符”。
因此,我需要能够对用户输入运行 priming 正则表达式,以将“$”替换为“$”,从而使模式变为“b$”
这个pre-regexp的Pattern必须是“$",命令:
manPattern=正则表达式。替换(用户输入,"$”)
当然,“$”意味着“字符串结束”,我希望你能看到问题所在。
我可以通过逐字节搜索来手动编辑字符串--但是当我们使用正则表达式来完成这项工作时,这似乎有点不必要。

osh3o9ms

osh3o9ms1#

您需要先转义用户字符串。使用以下代码:

Dim regExEscape As New RegExp
With regExEscape
    .pattern = "[-\\^$*+?.()|[\]{}]"
    .Global = True
    .MultiLine = False
End With

当使用用户定义的子模式定义正则表达式时,使用

.pattern = regExEscape.Replace(user_string, "\$&")

[-\\^$*+?.()|[\]{}]模式包含一个字符类,该字符类与模式中所有可能需要转义才能被视为文字字符的元字符相匹配。它与-\^$*+?.()|[]{},当您将其替换为\$&时,将在它们前面添加转义的\$&是对整个匹配值的反向引用)。

相关问题