2005年11月19日 星期六 07:25
请看下面代码: >>> a = [' d d', ' d d'] >>> p = re.compile('\s{3}(\S)*\s*(\S)*') >>> for i in a: ... p.match(i).groups() ... ('d', 'd') (None, 'd') 我的本意是想要把三个空格打头的项的内容拿出来,即a[0]里面的('d', 'd'),所以用这个正则式\s{3}(\S)*\s*(\S)*,但是a[1]也被匹配了。请问有没有什么方法可以通过正则式把a[1]过滤掉?谢谢。
2005年11月19日 星期六 07:54
在 05-11-19,makeyunbad<makeyunbad at gmail.com> 写道: > 请看下面代码: > > >>> a = [' d d', ' d d'] > >>> p = re.compile('\s{3}(\S)*\s*(\S)*') > >>> for i in a: > ... p.match(i).groups() > ... > ('d', 'd') > (None, 'd') > > 我的本意是想要把三个空格打头的项的内容拿出来,即a[0]里面的('d', > 'd'),所以用这个正则式\s{3}(\S)*\s*(\S)*,但是a[1]也被匹配了。请问有没有什么方法可以通过正则式把a[1]过滤掉?谢谢。 > 把(\S)*改为(\S)+试试 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
2005年11月19日 星期六 08:29
在 05-11-19,limodou<limodou at gmail.com> 写道: > 在 05-11-19,makeyunbad<makeyunbad at gmail.com> 写道: > > 请看下面代码: > > > > >>> a = [' d d', ' d d'] > > >>> p = re.compile('\s{3}(\S)*\s*(\S)*') > > >>> for i in a: > > ... p.match(i).groups() > > ... > > ('d', 'd') > > (None, 'd') > > > > 我的本意是想要把三个空格打头的项的内容拿出来,即a[0]里面的('d', > > 'd'),所以用这个正则式\s{3}(\S)*\s*(\S)*,但是a[1]也被匹配了。请问有没有什么方法可以通过正则式把a[1]过滤掉?谢谢。 > > > > 把(\S)*改为(\S)+试试 > -- 好了,是这样啊,非常感谢。
2005年11月19日 星期六 08:46
a1当然匹配了。 我们来看看 \s{3}(\S)*\s*(\S)* 是怎么和 ' dan derek '匹配的 首先是 \s{3}和最前面的三个空格匹配 然后 (\S)* 什么都不匹配 \s* 和dan前面的八个空格中剩下的五个匹配 (\S)* 和dan 匹配 写正则表达式,越详细越好 你这里知道\s是空格,直接写出来 " (\S+)\s+(\S+)" 此外,顺便讲一下 (\S)+ 匹配什么,这个我也是运行之后才知道的。不过肯定是写错了。 On 11/18/05, limodou <limodou at gmail.com> wrote: > 在 05-11-19,makeyunbad<makeyunbad at gmail.com> 写道: > > 请看下面代码: > > > > >>> a = [' d d', ' d d'] > > >>> p = re.compile('\s{3}(\S)*\s*(\S)*') > > >>> for i in a: > > ... p.match(i).groups() > > ... > > ('d', 'd') > > (None, 'd') > > > > 我的本意是想要把三个空格打头的项的内容拿出来,即a[0]里面的('d', > > 'd'),所以用这个正则式\s{3}(\S)*\s*(\S)*,但是a[1]也被匹配了。请问有没有什么方法可以通过正则式把a[1]过滤掉?谢谢。 > > > > 把(\S)*改为(\S)+试试 > -- > I like python! > My Blog: http://www.donews.net/limodou > NewEdit Maillist: http://groups.google.com/group/NewEdit > > _______________________________________________ > Python中文技术讨论邮件列表 > 发言: 发邮件到 python-chinese at lists.python.cn > 订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn > 退订: 发送 unsubscribe 到 python-chinese-request at lists.python.cn > 详细说明: http://python.cn/mailman/listinfo/python-chinese > >
2005年11月19日 星期六 10:45
在 05-11-19,shhgs<shhgs.efhilt at gmail.com> 写道: > a1当然匹配了。 > > 我们来看看 \s{3}(\S)*\s*(\S)* 是怎么和 ' dan derek '匹配的 > > 首先是 \s{3}和最前面的三个空格匹配 > 然后 (\S)* 什么都不匹配 > \s* 和dan前面的八个空格中剩下的五个匹配 > (\S)* 和dan 匹配 > > 写正则表达式,越详细越好 > 你这里知道\s是空格,直接写出来 > " (\S+)\s+(\S+)" > > 此外,顺便讲一下 (\S)+ 匹配什么,这个我也是运行之后才知道的。不过肯定是写错了。 ' dan derek '的情况下,(\S)+ 是不匹配,我修改后是这样的'\s{3}(\S)+\s*(\S)*',修改程序增加判断 >>> for i in a: ... if p.match(i): ... p.match(i).groups() ... ('d', 'd') ' dan derek '被过滤掉了,我试了一下" (\S+)\s+(\S+)",效果也是同样的。谢谢。
2005年11月19日 星期六 12:06
(\S)+和(\S+)是不一样的。 On 11/18/05, makeyunbad <makeyunbad at gmail.com> wrote: > 在 05-11-19,shhgs<shhgs.efhilt at gmail.com> 写道: > > a1当然匹配了。 > > > > 我们来看看 \s{3}(\S)*\s*(\S)* 是怎么和 ' dan derek '匹配的 > > > > 首先是 \s{3}和最前面的三个空格匹配 > > 然后 (\S)* 什么都不匹配 > > \s* 和dan前面的八个空格中剩下的五个匹配 > > (\S)* 和dan 匹配 > > > > 写正则表达式,越详细越好 > > 你这里知道\s是空格,直接写出来 > > " (\S+)\s+(\S+)" > > > > 此外,顺便讲一下 (\S)+ 匹配什么,这个我也是运行之后才知道的。不过肯定是写错了。 > > ' dan derek '的情况下,(\S)+ 是不匹配,我修改后是这样的'\s{3}(\S)+\s*(\S)*',修改程序增加判断 > > >>> for i in a: > ... if p.match(i): > ... p.match(i).groups() > ... > ('d', 'd') > > ' dan derek '被过滤掉了,我试了一下" (\S+)\s+(\S+)",效果也是同样的。谢谢。 > > _______________________________________________ > Python中文技术讨论邮件列表 > 发言: 发邮件到 python-chinese at lists.python.cn > 订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn > 退订: 发送 unsubscribe 到 python-chinese-request at lists.python.cn > 详细说明: http://python.cn/mailman/listinfo/python-chinese > >
Zeuux © 2025
京ICP备05028076号