正则表达式,用于替换包含单引号(')的字符串的一部分

卡洛斯·卡瓦洛(Carlos Cavallo)

我正在尝试替换撇号之间的文本的一部分,而不是全部,只是一部分。例如,我需要将仅在引号之间的文本内的字符/ *和* /替换为空文本,而不是在其外部。

我的输入文字,例如:

A = 'THIS IS AN ALPHABETIC /* CONSTANT' || WS_CON1 /* */ || 'TEST STRING */';

预期产量:

A = 'THIS IS AN ALPHABETIC  CONSTANT' || WS_CON1 /* */ || 'TEST STRING ';

我提取了引号中的文本,但不知道如何用空文本替换/ *和* /。

Sub ReplaceWithRegex()
    Dim strPattern作为字符串
    Dim strReplace作为字符串
    Dim regEx作为变量
    Dim strtxt作为字符串

    集regEx = CreateObject(“ vbscript.regexp”)
    strtxt =“ A ='这是一个字母/ *常量'|| WS_CON1 / * * / ||'测试字符串* /';“ 
    strPattern = “\ '([^ \'] *)\'” 
    strReplace = “”

    随着正则表达式
        。全球=真
        .MultiLine =真
        .IgnoreCase =假
        .Pattern = strPattern
    结束随着

    如果regEx.Test(strtxt)然后
        调试。打印regEx.Replace(strtxt,strReplace)
    其他
        MsgBox(“
结束子

显然,这会将引号之间的所有文本替换为空字符串。

我该如何解决这个问题?

罗恩·罗森菲尔德

这是使用正则表达式的另一种VBA方法。

Option Explicit
'Set Reference to Microsoft VBScript Regular Expressions 5.5
Function reReplaceComment(S As String) As String
  Dim RE As RegExp
  Dim I As Long, J As Long

Set RE = New RegExp
With RE
    .Global = True
    .Pattern = "('[^']*?)(?:(?:/\*)|(?:\*/))([^']*?')"
    reReplaceComment = .Replace(S, "$1$2")
End With
End Function

删除单引号内的标记

('[^']*?)(?:(?:/\*)|(?:\*/))([^']*?')

$ 1 $ 2

RegexBuddy创建

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用正则表达式替换字符串的一部分

正则表达式,用于捕获字符串的一部分

正则表达式删除字符串的一部分,然后替换另一部分

正则表达式选择字符串的一部分

正则表达式匹配字符串的一部分

正则表达式不匹配字符串的一部分

用正则表达式屏蔽字符串的一部分

正则表达式匹配字符串的最后一部分

正则表达式保留字符串的一部分

使用正则表达式屏蔽字符串的一部分

正则表达式-获取字符串的一部分

正则表达式PHP字符串的一部分

使用正则表达式匹配字符串的一部分

PHP正则表达式多行字符串的一部分

替换字符串的一部分

Perl字符串替换:匹配但不替换正则表达式的一部分

正则表达式匹配,其中字符串的一部分不包含字符

使用正则表达式搜索,但仅用 sed 替换字符串的一部分

在Javascript中使用正则表达式替换html字符串的一部分

正则表达式,总是在末尾替换字符串的一部分

用匹配的正则表达式的一部分替换字符串

跳过字符串的一部分,并用正则表达式替换匹配项

PHP查找并用正则表达式替换字符串的一部分

如何使用正则表达式替换字符串的一部分

如何使用正则表达式替换字符串的一部分

在Python中仅替换正则表达式字符串的一部分的方法

正则表达式如果包含特定单词则跳过字符串的一部分

正则表达式在一个单词后得到字符串的一部分

使用正则表达式在php中用字符串中的值搜索和替换字符串的一部分