首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配特定标记之间的alpha字符和空格

匹配特定标记之间的alpha字符和空格
EN

Stack Overflow用户
提问于 2013-07-26 13:35:35
回答 2查看 1K关注 0票数 0

我希望这个模式能找到在&标签之间的任何字母。标签之间的数字数量将是可变数量(有时为5,有时为5-4,有时为9) --基本上,我们总是希望标签之间有数字。有时我的文本文件可能会带着标签之间的字母或空格来找我。

我想要我的脚本做的是计算它在标签之间找到字母[a]的次数。如果它找到0,那么它将报告0。

我现在的测试文本文件有两个邮政编码标签..。它们都只有标记之间的数字(这很好),下面的脚本或模式应该显示0查找(因为没有字母),但是它报告返回2,好像它是向后的。如果我在其中一个标签中放了一个字母,下面的图案就会报告1,就好像这个图案是向后的。如果我将其更改为^0-9*,无论是否有字母或数字,或两者兼有,都找不到。

代码语言:javascript
复制
Set rgxp3 = New Regexp
rgxp3.Pattern = "<ZipCode>([^a-zA-Z]*)</ZipCode>"
rgxp3.IgnoreCase = False
rgxp3.Global = True
Set matches3 = rgxp3.Execute( contents )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 20:24:26

根据您的上一条注释,您希望在标记值中的任何位置找到带有字母的匹配项,例如<zipcode>123c456</zipcode>。试试这个:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-07-26 14:18:03

通常在regex中,分组用于提取语句中的部分(使用方括号())。

因此,要解决这个问题,您需要编写正则字符串,例如;

代码语言:javascript
复制
<zipcode>([\da-zA-Z]{5}-[\da-zA-Z]{4})</zipcode>

(这个正则字符串查找5个字母数字字符,后面跟着一个连字符(-),后面跟着4个字母数字字符。(我不是美国人,所以我不清楚邮政编码的可能格式,但是你可以通过谷歌搜索找到这个部分的regex )。

从我们的表达中,括号内的部分可以作为一个组来提取;

代码语言:javascript
复制
[\da-zA-Z]{5}-[\da-zA-Z]{4}

由于我们只有一个分组,这通常被称为组0。

所以在你的样本上使用第一个表达式;

代码语言:javascript
复制
<zipcode>12345-1234</zipcode>

而返回第0组,会给你;

代码语言:javascript
复制
12345-1234

我不熟悉vbscript,所以我无法亲自回答,但这个答案似乎解释了如何在vbscript;正则表达式-如何在匹配中找到匹配?中提取子匹配

如果你想测试你的正则表达式,你应该使用像RegexPal这样的测试工具,它突出显示了实时匹配的内容,这样你就可以测试表达式的一部分,看什么不起作用。http://regexpal.com/的另一个很好的信息源是regex引用,这个页面保存了大量的基本正则表达式引用信息。在这里输入链接描述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17882762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档