正则表达式使用vbscript启动字符

时间:2014-02-15 17:00:32

标签: regex vbscript

我正在尝试为一个字符串编写正则表达式,该字符串应以"AET""BUS"开头,然后'_'和一些字符串然后'_'然后以任何字符串开头。 例如:

<AET/BUS>_<text>_....

我需要捕捉这种模式。

我试着把它写成:

.pattern = "(AET|BUS)_*_*"  

但这不适合我。

请你帮我写一下这个模式的正则表达式。 例如:

<AET/BUS>_<text>_....

5 个答案:

答案 0 :(得分:1)

尝试这种模式:

"^(AET|BUS)_.*_"  

这将匹配任何以AETBUS开头的字符串,后跟下划线,后跟零或更多任何字符,后跟下划线。

答案 1 :(得分:0)

当你说“然后用任何字符串休息”时,你的意思是什么?字符串什么时候停止?

^(AET|BUS)_.*?_

应执行非贪婪的搜索匹配,从AET_或BUS_到它找到的下一个_然后停止。如果你需要在第二个_之后捕获更多的字符,听起来就像你那样,你需要定义搜索应该以某种方式结束的时间,除非你想在之后抓住一切。

答案 2 :(得分:0)

这种用法是贪婪的第一场比赛 它与_之间的另一个_不匹配。它比非贪婪更快,但却是最小的匹配。

 ^(AET|BUS)_[^_]*_

答案 3 :(得分:0)

不是答案,但我需要格式化才能让@ mrres1看到光明:

>> set r = New RegExp
>> r.Pattern = "<(AET|BUS)>_{1}([^_]){1,}_{1}(.){1,}"
>> set ms = r.Execute("<BUS>_TESTTEST_!@#$%^&*()")
>> WScript.Echo ms(0).Submatches(0)
>> WScript.Echo ms(0).Submatches(1)
>> WScript.Echo ms(0).Submatches(2)
>>
BUS
T
)
>> r.Pattern = "<(AET|BUS)>_{1}([^_]{1,})_{1}(.{1,})"
>> set ms = r.Execute("<BUS>_TESTTEST_!@#$%^&*()")
>> WScript.Echo ms(0).Submatches(0)
>> WScript.Echo ms(0).Submatches(1)
>> WScript.Echo ms(0).Submatches(2)
>>
BUS
TESTTEST
!@#$%^&*()

答案 4 :(得分:-1)

<(AET|BUS)>_{1}([^_]){1,}_{1}(.){1,}

这将使三个捕获,“AET”或“BUS”为1,“&lt; text&gt;”为2,“.......”为3。

如果要捕获下划线,只需将它们移动到括号内。

例如,这些都符合模式:

<AET>_<text>_....
<BUS>_<text>_....
<AET>_test123_test
<BUS>_TESTTEST_!@#$%^&*()