[问题] VBA 2010的regular expression如何非贪婪

楼主: gecer (gecer)   2014-11-12 22:58:48
/* 听说注明使用的语言、环境
* 问题有可能较容易被解决...
*/
excel 2010 win7
code is as below
Option Explicit
Sub t()
Dim reg As Object
Dim s As String
Dim match As Object
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "(123.*?abc)"
reg.ignoreCase = True
reg.MultiLine = False
reg.Global = True
s = "dfr123 123 1235abc"
Set match = reg.Execute(s)
End Sub
and the result is
http://i.imgur.com/VZda4lY.png
小弟想要抓到最短的1235abc 字串 请问要如何更正?
作者: LPH66 (-6.2598534e+18f)   2014-11-12 23:33:00
非贪婪只能从由左到右找最短的组合, 由右到左的要用别招你的问题可能应该要写出“123, 跟着一串字当中不能有 123,然后 abc”才行, 不过我一下子想不到中间那个要怎么写就是
作者: lin1987www (林奕忠)   2014-11-25 04:48:00
我觉得可以检查是否有没有包含 123 字串做检查123((?!123).)*abc 这样每次在吃字的时候都会判断右边是不是有 123 这样应该可以达到你要的效果 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com