使用RegEx我的要求的正确模式是什么

Jag*_*iru 0 regex excel vba excel-vba

能告诉我,我的要求是什么样的正确模式.

我有一个字符串,我想找到特定模式之间的字符串.我有到目前为止尝试的代码,但无法获得预期的结果.

输入字符串

ssdfsfssXf1sddfsXfsdaf578ds0Xafds1dsfXdafspfsfsfsfds

预期结果

Xf1sddfsX

Xafds1dsfX  
Run Code Online (Sandbox Code Playgroud)

实际结果

Xf1sddfsXfsdaf578ds0Xafds1dsfX  
Run Code Online (Sandbox Code Playgroud)

VB代码

Sub RegEx_Tester()

Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String
   ' Create a regular expression object.
   Set objRegExp = New RegExp

   'Set the pattern by using the Pattern property.

   objRegExp.Pattern = "X.*X"

   ' Set Case Insensitivity
   objRegExp.IgnoreCase = True

   'Set global applicability.
   MyString = "ssdfsfssdXf1sddfsXfsdaf578ds0Xafds1dsfXdafspfsfsfsfds"
   objRegExp.Global = True
   Set colMatches = objRegExp.Execute(MyString)  ' Execute search.

    For Each objMatch In colMatches   ' Iterate Matches collection.
            Debug.Print objMatch.Value 
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

提前致谢 !!

Bra*_*raj 5

使用非贪婪(懒惰)的方式

变化:

X.*X
Run Code Online (Sandbox Code Playgroud)

至:

X.*?X
Run Code Online (Sandbox Code Playgroud)

在线演示


或者更好地使用

X[^X]*+X
Run Code Online (Sandbox Code Playgroud)

否定字符类/集

在开始方括号后键入一个插入符号否定了字符类.结果是字符类匹配任何不在字符类中的字符.

占有量词

占有量词是防止正则表达式引擎尝试所有排列的一种方法.这主要是出于性能原因.


值得阅读的文章✽想要懒惰吗?想想两次.

但是,延迟量词有一个成本:在大括号内的每一步,引擎首先尝试惰性选项(匹配无字符),然后尝试匹配下一个标记(结束括号),然后必须回溯.

参见✽贪婪的时刻,懒惰的时刻.

一个不情愿(懒惰)的量词可以让你感到安全,因为你知道你不会吃掉比你需要的更多的角色并超越你的比赛