[英]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.