1

私はOutlook 2013 VBAを使用して<スパン>セクションを取り出して置き換えてメール本文を変更しようとしています。しかし、複数のスパンでは、正規表現が1つのスパンしか選択しないようにするのに問題があります。最短一致オプション

他の検索に基づいて、私は否定的な先読みを使用しようとしていますが、失敗しています。下から

結果は次のとおりです。<span><span style = blah blah>Tags: test, test2</span>

望ましい結果は次のとおりです。テストモジュール用<span style = blah blah>Tags: test, test2</span>

コード:

Sub regextest() 
Dim regex As New RegExp 
Dim testStr As String 

testStr = "a<span><span style=blah blah>Tags: test, test2</span></span>" 

regex.pattern = "<span.*?(?:(span)).*?Tags:.*?</span>" 

Set matches = regex.Execute(testStr) 

For Each x In matches 
    Debug.Print x 'Result: <span><span style = blah blah>Tags: test, test2</span> 
Next 
End Sub 

ありがとうございます!上記のコメントで

+1

試してみてください[ ' [^ <] *タグ:[^ <]*'](https://regex101.com/r/yl2gqj/1) –

+2

関連:http://stackoverflow.com/a/1732454/4088852 – Comintern

+0

Wiktor - ありがとう。朝に試してみるよ。 Comintern - 私は "HTMLを解析する"と言っているわけではありません。かなり基本的なパターンを見つけて置き換えています。文書がHTML形式になっているだけです。 –

答えて

1

Wiktor第の答えは私の目的のために動作します:

<span\b[^<]*>[^<]*Tags:[^<]*</span>

これは、限り2つのスパン両端の間には「<」は存在しないと動作します。先読みではありませんが、私がやっていることには十分で、とてもシンプルです。

ありがとうございました!