我想要一个正则表达式来查找以下类型的字符串:
,其中
abc - > abc始终保持abc
任何事情 - >它可以是任何字符串
tld - >它可以是任何tld(顶级域名),例如.com
.net
.co.in
.co.uk
等。
注意:该网址最后不得包含任何其他内容,因此无法接受http://anything.abc.tld/xyz。
注意:由于tld列表是一个很长的列表,但仍然有可能忘记包含一些tld,我不想在正则表达式中编写每个tld来检查。相反,我希望有一个正则表达式来检查以下(对于tld):
在abc之后,有一段时间(。)
在句号(。)之后,至少有一个字符
答案 0 :(得分:3)
有很多TLD,而且它们的数量正在增长。你可以用
^http://[\w.-]+\.abc\.(com|net|co\.in|.... )/?$
但这必须定期维持。
仅使用[^/]*
作为TLD可能会更容易。这看起来像
^http://[\w.-]+\.abc\.[^/]+/?$
答案 1 :(得分:1)
^http://[a-zA-Z0-9.-]+\.abc\.[a-zA-Z.]+/?$
根据您使用的正则方言,可能会略有不同。
答案 2 :(得分:1)
^(http://)(.+)(abc)+.([ ^ /] +)$
所有人也为您分组:)
我强烈建议您使用gskinner.com的RegEx工具
alt text http://img683.imageshack.us/img683/3760/regexmatch.jpg
答案 3 :(得分:0)
首先确定您将要处理的数据类型:这些基于行的记录,还是XML(例如,它们可能是其他任何东西)?这将告诉你如何锚定比赛。如果你可以使用^锚定它们,那么这会更容易。在“http://”和顶级域名之间是否需要可变数量的字符串?如果您不想写出顶级域名,请使用
\.[a-z]\{2,3\}
确切的形式取决于您使用的是基本正则表达式(sed,grep)还是扩展正则表达式(awk),或Perl兼容的正则表达式。
你有什么尝试?你是如何测试它的?