Python论坛  - 讨论区

标题:[python-chinese] Ò»¸öÆ¥ÅäµÄÎÊÌâ

2004年02月27日 星期五 16:44

huiming lee stary_night_lee at yahoo.com.cn
Fri Feb 27 16:44:27 HKT 2004

大家好:
 
我想解决这样一个问题:有三个字符串: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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月27日 星期五 16:50

Jacob Fan jacob at exoweb.net
Fri Feb 27 16:50:04 HKT 2004

 
字符串里包括换行么?如果不包括换行可以这样:
 
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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月27日 星期五 16:56

Jacob Fan jacob at exoweb.net
Fri Feb 27 16:56:49 HKT 2004

>>> 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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月27日 星期五 17:24

huiming lee stary_night_lee at yahoo.com.cn
Fri Feb 27 17:24:17 HKT 2004

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月27日 星期五 22:34

John Li johnli at ahlt.net
Fri Feb 27 22:34:38 HKT 2004

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兆网络存储空间

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月28日 星期六 09:56

joe gyjoe at 21cn.com
Sat Feb 28 09:56:36 HKT 2004

如果这个问题跟你描述的是一样的话,我想是比较简单的

你只要从目标字符串中每次依次取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
> 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年02月28日 星期六 10:46

huiming lee stary_night_lee at yahoo.com.cn
Sat Feb 28 10:46:46 HKT 2004

实际的问题比我描述的要复杂, 似乎正则表达式是比较好的解法,
我为了请教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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号