用于匹配完整子字符串的正则表达式

时间:2011-11-29 10:05:14

标签: regex

很抱歉这个虚拟问题,但我是一个正则表达新手。

我想要这些比赛:

MATCH!     http://www.google.com/search?q=...
NO MATCH   http://www.googledummy.com/search?q=...
MATCH!     http://www.google.it/search?q=...
NO MATCH!  http://www.google.it/
NO MATCH!  http://www.google.it/foobar 
MATCH!     google.it/search?q=...    
MATCH!     google.xxxxx/search?q=...

我的正则表达式应该是这样的吗?

google.[*$]/search

4 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

^(?:https?://)?(?:[^.\s]+\.)*google(\.\w+){1,2}/search\?q=

这个正则表达式允许:

  • ^ - 从头开始​​匹配 - 不允许部分匹配域。
  • (?:https?://)? - http或https协议。
  • (?:[^.]+\.)* - 子域名,但不包括其他字符:hello.google.com没问题。
  • 谷歌

不允许:

  • http://notgoogle.com/search?q=
  • http://example.com?google.com/search?q=

问题:

  • (\.\w+){1,2} - 允许google.co.il,还有google.hackers.com。这是有问题的,除非你想要列出所有双字tld的白名单。
  • q查询参数可能不是第一个(但可能是其中一项要求)。
  • \w可能不适合在顶级域名中有效的所有字符(尽管Google不太可能购买google.קום

示例:http://rubular.com/r/Avd5RFs3oH

结论 - 如果适用,请使用网址解析器:)

答案 1 :(得分:0)

从你写的我会说

google\.[a-z]+\/search

是否应在\/之前使用/search取决于您使用的语言。

由于SeRPRo不适用于google.co.uk,要使用它,您可以使用:

google\.[a-z]+(?:\.[a-z])?\/search

(是否有任何国家需要第三级?)

答案 2 :(得分:0)

这个有效:

google\.[a-zA-Z\.]+/(search\W.+)

Example

答案 3 :(得分:0)

您可能需要以下内容:

google\.[a-zA-Z.]+/search

在您遇到像google.com.ua

这样的二级Google网站之前,其他两个答案都应该可以正常运行
相关问题