我需要組值而不是匹配項。這就是我試圖得到這些的方式:
Dim item as Variant, matches As Object, match As Object, subMatch As Variant, subMatches(), row As integer
row = 1
For Each item In arr
With regex
.Pattern = "\bopenfile ([^\s] )|\bopen file ([^\s] )"
Set matches = regex.Execute(item)
For Each match In matches
For Each subMatch In match.subMatches
subMatches(i) = match.subMatches(i)
ActiveSheet.Range("A" & row).Value = subMatches(i)
row = row 1
i = i 1
Next subMatch
Next match
End With
Next item
這是應該從中提取的文本:
一些幫助會很棒:)
Open File file.M_p3_23432e done
Openfile file.M_p4_6432e done
Open File file.M_p3_857432 done
Open File file.M_p4_34892f done
Openfile file.M_p3_781 done
資訊:我正在使用 Excel VBA .. 如果知道這一點很重要。
uj5u.com熱心網友回復:
您可以修改正則運算式以匹配和捕獲一個捕獲組:
\bopen\s?file\s (\S )
請參閱正則運算式演示。
詳情:
\b- 單詞邊界open- 一個固定的詞\s?- 一個可選的空格file- 一個固定的詞\s- 一個或多個空格(\S )- 第 1 組:一個或多個非空格。
現在,檔案名總是在SubMatches(0).
請注意,正則運算式必須使用不區分大小寫的選項和全域(如果字串包含多個匹配項)進行編譯:
With regex
.Pattern = "\bopen\s?file\s (\S )"
.IgnoreCase = True
.Global = True
End With
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508020.html
