[英]Regex to find a pattern, then insert into the pattern
使用Excel VBA
我不确定您是否可以使用正则表达式来执行此操作,但是我要尝试的操作是
“ ThisIsAn ExampleString”
找到每个小写字母的实例,然后立即找到一个大写字母,然后在其中插入一个管道。
所以最终结果将是
“这|是|一个示例|字符串”
所以我猜模式是“ [az] [AZ]”
我开始认为我正在用正则表达式来弄错树,应该尝试某种功能。
编辑:
感谢所有在下面给出答案的人,您给了我解决方案。
对于其他阅读本文的人,这就是我的最终结果:
Sub PipeInsert()
Dim cell As Range
For Each cell In Selection
cell.Value = ReplaceTest(cell.Value, "([a-z])([A-Z])", "$1|$2")
Next
End Sub
Function ReplaceTest(str1, patrn, replStr)
Dim regEx
' Create regular expression.
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.Global = True
' Make replacement.
ReplaceTest = regEx.Replace(str1, replStr)
End Function
正则表达式替换很好:)
=regex("ThisIsAn ExampleString", "([a-z])([A-Z])", "$1|$2")
https://regex101.com/r/zF4mM5/1
我从此答案中获取了=regex()
函数-以前从未与Excel VBA一起使用...
您将使用所选语言的功能(在这种情况下为Excel VBA)-我对此一无所知。 我认为它具有匹配和替换正则表达式的功能...
如果可以执行替换,您将需要以下内容:
s/([a-z])([A-Z])/\1|\2/g
快速浏览Google给我的印象是VB宏有一个“ RegExp”类可供使用-可以执行替换:
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
我的建议中的pattern
为([az])([AZ])
; replacement
为$1|$2
我在这台机器上没有Excel,这纯粹是理论上的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.