RegEx是什么使我的需求适当的模式

你能告诉我什么是我的要求适当的模式。

我有一个string,我想find特定模式之间的string。 我有我到目前为止尝试的代码,但无法获得预期的结果。

inputstring

ssdfsfssXf1sddfsXfsdaf578ds0Xafds1dsfXdafspfsfsfsfds

预期结果

 Xf1sddfsX Xafds1dsfX 

实际结果

 Xf1sddfsXfsdaf578ds0Xafds1dsfX 

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 

提前致谢 !!

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

更改:

 X.*X 

至:

 X.*?X 

在线演示


或更好地使用

 X[^X]*+X 

否定的字符类/集合

打开方括号后插入一个脱字符否定angular色类别。 结果是字符类匹配不在字符类中的任何字符。

拥有量词

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


一个值得阅读的文章✽想要懒惰? 想想两次。

然而,一个懒惰的量词有一个代价:在大括号内的每一步,引擎首先尝试懒惰选项(不匹配任何字符),然后尝试匹配下一个令牌(右大括号),然后必须回溯。

请参阅✽一个贪婪的时刻,一个懒惰的时代。

一个不愿意(懒惰)的量词可以让你感到安全,因为知道你不会吃超过需要的字符,并超过你的匹配