2004年02月27日 星期五 16:44
大家好: 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如abc, abcxyz, abc123xyz......, 字符串集的例子象这样: abcxyz123 abcxyz abc 123 abcd 1234 a 按照题意, 后面三个字符串都不可以。 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同的字符串, 要找到所有的得考虑所有的排列情况。 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字符的组合。 不知道大家有什么好办法, 不用正则表达式也可以. 多谢了! --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040227/c9b31ca2/attachment.html
2004年02月27日 星期五 16:50
字符串里包括换行么?如果不包括换行可以这样: re.match(r'((abc)|(def)|(123))*$',the_string) ------- Explicit is better than implicit ... -----Original Message----- From: huiming lee [mailto:stary_night_lee at yahoo.com.cn] Sent: 2004年2月27日 16:44 To: python-chinese at lists.python.cn Subject: [python-chinese] ò????¥??μ??êìa 大家好: 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如abc, abcxyz, abc123xyz......, 字符串集的例子象这样: abcxyz123 abcxyz abc 123 abcd 1234 a 按照题意, 后面三个字符串都不可以。 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同的字符串, 要找到所有的得考虑所有的排列情况。 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字符的组合。 不知道大家有什么好办法, 不用正则表达式也可以. 多谢了! _____ Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 <http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.mail.yahoo.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040227/8d398ed5/attachment.htm
2004年02月27日 星期五 16:56
>>> print re.match(r'((abc)|(def)|(123))*$',"abcdef-") None >>> print re.match(r'((abc)|(def)|(123))*$',"abcdef\n") <_sre.SRE_Match object at 0x009195F8> >>> print re.match(r'((abc)|(def)|(123))*$',"abcdef") <_sre.SRE_Match object at 0x009195F8> ------- Explicit is better than implicit ... -----Original Message----- From: Jacob Fan Sent: 2004年2月27日 16:50 To: python-chinese at lists.python.cn Subject: RE: [python-chinese] ò????¥??μ??êìa 字符串里包括换行么?如果不包括换行可以这样: re.match(r'((abc)|(def)|(123))*$',the_string) ------- Explicit is better than implicit ... -----Original Message----- From: huiming lee [mailto:stary_night_lee at yahoo.com.cn] Sent: 2004年2月27日 16:44 To: python-chinese at lists.python.cn Subject: [python-chinese] ò????¥??μ??êìa 大家好: 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如abc, abcxyz, abc123xyz......, 字符串集的例子象这样: abcxyz123 abcxyz abc 123 abcd 1234 a 按照题意, 后面三个字符串都不可以。 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同的字符串, 要找到所有的得考虑所有的排列情况。 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字符的组合。 不知道大家有什么好办法, 不用正则表达式也可以. 多谢了! _____ Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 <http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.mail.yahoo.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040227/954866ba/attachment.html
2004年02月27日 星期五 17:24
Jacob 兄: 非常感谢, 你可帮了我大忙了! 我想了很久,你一下子就搞定了...... 如果被查询的字符串文件包括换行,而且得处理unix(line feed)和dos (carriage-return, line-feed)不同的情况,又该如何呢? 很不好意思, 任务太紧了, 没时间研究。 再次感谢! Jacob Fan <jacob at exoweb.net> wrote: 字符串里包括换行么?如果不包括换行可以这样: re.match(r'((abc)|(def)|(123))*$',the_string) ------- Explicit is better than implicit ... -----Original Message----- From: huiming lee [mailto:stary_night_lee at yahoo.com.cn] Sent: 2004年2月27日 16:44 To: python-chinese at lists.python.cn Subject: [python-chinese] ò????¥??μ??êìa 大家好: 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如abc, abcxyz, abc123xyz......, 字符串集的例子象这样: abcxyz123 abcxyz abc 123 abcd 1234 a 按照题意, 后面三个字符串都不可以。 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同的字符串, 要找到所有的得考虑所有的排列情况。 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字符的组合。 不知道大家有什么好办法, 不用正则表达式也可以. 多谢了! --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040227/e7ebda43/attachment.htm
2004年02月27日 星期五 22:34
You need to add anchors '^' and '$': re.compile(r'^(abc)*(xyz)*(123)*$') John 大家好: 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出 可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如 abc, abcxyz, abc123xyz......, 字符串集的例子象这样: abcxyz123 abcxyz abc 123 abcd 1234 a 按照题意, 后面三个字符串都不可以。 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同 的字符串, 要找到所有的得考虑所有的排列情况。 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字 符的组合。 不知道大家有什么好办法, 不用正则表达式也可以. 多谢了! Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间
2004年02月28日 星期六 09:56
如果这个问题跟你描述的是一样的话,我想是比较简单的 你只要从目标字符串中每次依次取3个字符,比较这个3个字符与匹配字符串是否相同就OK了,效率是线性的,无须与正则表达式 ----- Original Message ----- From: "John Li" <johnli at ahlt.net> To: <python-chinese at lists.python.cn> Sent: Friday, February 27, 2004 10:34 PM Subject: RE: [python-chinese] 一个匹配的问题 > You need to add anchors '^' and '$': > re.compile(r'^(abc)*(xyz)*(123)*$') > > John > > > > 大家好: > > 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出 > 可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如 > abc, abcxyz, abc123xyz......, > > 字符串集的例子象这样: > abcxyz123 > abcxyz > abc > 123 > abcd > 1234 > a > > 按照题意, 后面三个字符串都不可以。 > > 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 > > 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, > > 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同 > 的字符串, 要找到所有的得考虑所有的排列情况。 > > 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字 > 符的组合。 > > 不知道大家有什么好办法, 不用正则表达式也可以. > > 多谢了! > > > > > > > > > > > > > > > > > Do You Yahoo!? > 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 > -------------------------------------------------------------------------------- > _______________________________________________ > python-chinese mailing list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese >
2004年02月28日 星期六 10:46
实际的问题比我描述的要复杂, 似乎正则表达式是比较好的解法, 我为了请教RE的写法,才把问题描述成这样。 还有一个问题,我得用程序生成RE,不能像r'string'这么简单, 因为'string'在程序里是一个变量,写成r var显然不行, 我又没找到 向unicode这样的函数。 我昨天才学习RE, 可能问题很蠢, 多多包涵 :) joe <gyjoe at 21cn.com> wrote: 如果这个问题跟你描述的是一样的话,我想是比较简单的 你只要从目标字符串中每次依次取3个字符,比较这个3个字符与匹配字符串是否相同就OK了,效率是线性的,无须与正则表达式 ----- Original Message ----- From: "John Li" To: Sent: Friday, February 27, 2004 10:34 PM Subject: RE: [python-chinese] 一个匹配的问题 > You need to add anchors '^' and '$': > re.compile(r'^(abc)*(xyz)*(123)*$') > > John > > > > 大家好: > > 我想解决这样一个问题:有三个字符串:abc, xyz, 123, 从一个字符串集中选出 > 可以完全由这三个字符串组合而成的字符串. 组合就是数学上组合的意思,比如 > abc, abcxyz, abc123xyz......, > > 字符串集的例子象这样: > abcxyz123 > abcxyz > abc > 123 > abcd > 1234 > a > > 按照题意, 后面三个字符串都不可以。 > > 在实际环境中, 面对的是一个非常大的集合,要考虑算法的高效。 > > 我试图用正则表达式解决这个问题, 但是想不出来高效的正则表达式, > > 比如这样一个正则表达式,(abc)*(xyz)*(123) 只能找到那些与这个排列次序相同 > 的字符串, 要找到所有的得考虑所有的排列情况。 > > 让我总结一下, :) ,我觉得正则表达式可以表达字符的排列,但是不能表达字 > 符的组合。 > > 不知道大家有什么好办法, 不用正则表达式也可以. > > 多谢了! > > > > > > > > > > > > > > > > > Do You Yahoo!? > 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 > -------------------------------------------------------------------------------- > _______________________________________________ > python-chinese mailing list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > _______________________________________________ python-chinese mailing list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040228/3951e6a4/attachment.html
Zeuux © 2024
京ICP备05028076号