Perl:我如何匹配这样的模式?

时间:2012-10-23 00:06:15

标签: regex perl

假设有两个词,例如:googleweb.us和google.us

这是我在一个正则表达式中匹配这些的一种方法,但它看起来很难看。

/(google|espn|foxtel)\w*[web\.\w+|\.\w+]/

我只想涵盖“web”存在与否的两种情况。怎么可以改善模式?

2 个答案:

答案 0 :(得分:2)

这将允许“网络”仅适用于谷歌:

/(google(web)?|espn|foxtel)\.\w+/

这将允许“web”对任何域都是可选的:

/(google|espn|foxtel)(web)?\.\w+/

答案 1 :(得分:1)

你需要修改你的'角色类'。方括号中的材料被视为字符类,而不是您的想法。

与您在文字('googleweb.us'和'google.us')中提出的问题相符的正则表达式是:

/^(google)(web)?\.us$/

当你定义了你想要匹配的其他内容时,人们可以优化正则表达式。