+ -
当前位置:首页 → 问答吧 → 正则表达式的问题

正则表达式的问题

时间:2011-09-14

来源:互联网

有www.baidu.com和www.baidu.com?name这样的字符串,我想要解析得出com,
正则表达式如下(.*)\.(.*)\??(.*)
我解释下我这样写的原因:(.*)匹配www.baidu,\.转义.,(.*)匹配com,\?转义?,第二个?代表前面的?重复0次或者1次,后面的(.*)代表后面的任意字符。但是返回的就是com?name

我希望达到的目的:不管字符串是www.baidu.com还是www.baidu.com?name,我的正则表达式都能够解析得到com字段。

高手们快来指点一二吧,急等……

作者: yatou1990   发布时间: 2011-09-14

我先自己顶下

作者: yatou1990   发布时间: 2011-09-14

?好像只在perl中有效。
我也不会,坐等高手。

作者: o06v90o   发布时间: 2011-09-14

重复0次或多次是*

作者: qq120848369   发布时间: 2011-09-14

TNND,com字段是什么,讲明白。

作者: qq120848369   发布时间: 2011-09-14

可能是 ?不支持的原因.

作者: zmlovelx   发布时间: 2011-09-14

如果你不要前面的部分(www.baidu.),那你应该用非捕获组啊。
(.*)你这样写也不行,因为这里有一个贪婪匹配的问题。
你用这个试试:
(?:[^\.]*\\.[^\.]*\.)[^\.]*
不过各种脚本对正则的解析可能会有一些细微的区别

作者: bayougeng   发布时间: 2011-09-14