我希望这个模式能找到在&标签之间的任何字母。标签之间的数字数量将是可变数量(有时为5,有时为5-4,有时为9) --基本上,我们总是希望标签之间有数字。有时我的文本文件可能会带着标签之间的字母或空格来找我。
我想要我的脚本做的是计算它在标签之间找到字母[a]的次数。如果它找到0,那么它将报告0。
我现在的测试文本文件有两个邮政编码标签..。它们都只有标记之间的数字(这很好),下面的脚本或模式应该显示0查找(因为没有字母),但是它报告返回2,好像它是向后的。如果我在其中一个标签中放了一个字母,下面的图案就会报告1,就好像这个图案是向后的。如果我将其更改为^0-9*,无论是否有字母或数字,或两者兼有,都找不到。
Set rgxp3 = New Regexp
rgxp3.Pattern = "<ZipCode>([^a-zA-Z]*)</ZipCode>"
rgxp3.IgnoreCase = False
rgxp3.Global = True
Set matches3 = rgxp3.Execute( contents )发布于 2013-07-26 20:24:26
根据您的上一条注释,您希望在标记值中的任何位置找到带有字母的匹配项,例如<zipcode>123c456</zipcode>。试试这个:
str = "..."
Set re = New RegExp
re.Pattern = "<zipcode>(.*?[a-z].*?)</zipcode>"
re.Global = True
re.IgnoreCase = True
For Each m In re.Execute(str)
WScript.Echo m.SubMatches(0)
Next发布于 2013-07-26 14:18:03
通常在regex中,分组用于提取语句中的部分(使用方括号())。
因此,要解决这个问题,您需要编写正则字符串,例如;
<zipcode>([\da-zA-Z]{5}-[\da-zA-Z]{4})</zipcode>(这个正则字符串查找5个字母数字字符,后面跟着一个连字符(-),后面跟着4个字母数字字符。(我不是美国人,所以我不清楚邮政编码的可能格式,但是你可以通过谷歌搜索找到这个部分的regex )。
从我们的表达中,括号内的部分可以作为一个组来提取;
[\da-zA-Z]{5}-[\da-zA-Z]{4}由于我们只有一个分组,这通常被称为组0。
所以在你的样本上使用第一个表达式;
<zipcode>12345-1234</zipcode>而返回第0组,会给你;
12345-1234我不熟悉vbscript,所以我无法亲自回答,但这个答案似乎解释了如何在vbscript;正则表达式-如何在匹配中找到匹配?中提取子匹配
如果你想测试你的正则表达式,你应该使用像RegexPal这样的测试工具,它突出显示了实时匹配的内容,这样你就可以测试表达式的一部分,看什么不起作用。http://regexpal.com/的另一个很好的信息源是regex引用,这个页面保存了大量的基本正则表达式引用信息。在这里输入链接描述
https://stackoverflow.com/questions/17882762
复制相似问题