/ /オプションのグループを使用して最短一致を得る問題 - javascript、regex、vba、vbscript、non-greedy

オプションのグループを使用して最短一致を得る問題 - javascript、regex、vba、vbscript、non-greedy

私は各グループの間で0〜2文字を許可したい (this is)?.??.??(an)?.??.??(example sentence) 正規表現。下の文字列の太字のテキストと一致する必要があります。

間違いなくアン 例文
間違いなく これは例文です
何か何か 例文

さて、最初の例では、マッチは ah. example sentence。私は2つの疑問符を "。"正規表現エンジンは0文字にマッチすることを好むでしょう。

私はMS WordのVBA内で正規表現を使用しています。 CreateObject("vbscript.regexp")私が理解しているように、VBScriptの正規表現フレーバを使用しています。これは、JavaScriptのフレーバと同じであることがわかります。

回答:

回答№1の場合は3

検索時 0020002101 〜すべき 2.??.??.??101 好きではない 210120002101

正規表現egineは何も好きではありません。それは左から右に一致します。一度 2 (最初の 2)それは後続のサブパターンとのマッチングを開始し、マッチが見つかるとそれが返されます。

あなたの場合、あなたは .{0,2} オプションのグループの内部,

(this is.{0,2})?(an.{0,2})?(example sentence)
^^^^^^     ^^^^^^

を参照してください 正規表現のデモ.

オプションの文字列の順序が重要な場合は、それらをネストします。

(this is.{0,2}(an.{0,2})?)?(example sentence)

見る 別の正規表現のデモ。この正規表現は一致します an それ以降は0〜2文字で this is その前に0〜2文字の文字列があります。