ExcelVBA,正则表达式,怎么替换一部分字符串

我的正则表达式分为2个部分,怎么在匹配成功后,替换第2部分?
我有一组字符串

12苏5a中国人民一二d三
egg其d中国人民四a1五六
凡dsf事都美国纽约AAFa分
发的事都美国纽约A分Fa分
....
...
...
我写正则表达式可以写
^\S+(中国人民|美国纽约)\S+$
怎么在成功匹配以后,把“中国人民”和"美国纽约"两端的字符去掉
就留下
中国人民
中国人民
美国纽约
美国纽约
....
...
..

只有两个关键字最好不用正则,IF INSTR两次就可以了,如果关键字多一点,可以使用for循环,例如:

str = ".需要处理的字符串,可以从文件、区域、数组等.."
for each t in array("中国人民","美国纽约","印度阿三")
    if instr(str,t)>0 then
        str = t
        exit for
    end if
next t

比正则表达式简单和高效。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-08-08

你可以用Replace函数去掉“中国人民”和"美国纽约"两端的字符.具体程序如下:

Public Sub TestReplace()

Dim ss, re, rv 

    

ss = "12苏5a中国人民一二d三"& vbNewLine &"egg其d中国人民四a1五六"& vbNewLine&"凡dsf事都美国纽约AAFa分"& vbNewLine&"发的事都美国纽约A分Fa分" & vbNewLine     

Set re = New RegExp 

    

re.Pattern = "^\S+(中国人民|美国纽约)\S+$"     

re.Global = True     

re.IgnoreCase = True     

re.MultiLine = True 

    

rv = re.Replace(ss, "$1")     

MsgBox rv 

End Sub

本回答被提问者采纳
第2个回答  2018-07-06
excel的替换功能比较弱,可以将数据粘贴到word进行替换,word通配符种类较多。
需要你将具体数据示例出来才能知道如何解决。本回答被网友采纳
第3个回答  2018-03-15
正则多累人啊,你这么简单的东西就不要正则了吧
if instr(***,"中国人民")>0 then x=“中国人民”
if instr(***,"美国纽约")>0 then x=“美国纽约”
第4个回答  2018-03-15

替换*中国人民*为中国人民即可

要代码,录个宏就看到

相似回答