读书人

请问:正则表达式中的“或”#039;|#039;的作

发布时间: 2012-06-07 15:05:14 作者: rapoo

求助,请教:正则表达式中的“或”'|'的作用域以及“或”和()的冲突。
目前在用python,就用python举例吧。。。

Python code
import rere.search('a|bc','abc')

例子举的不太好,我的问题是该行的意思是匹配a或bc 还是匹配ac或bc?

小弟倾向于前者。

那么就出现了另一个问题:如果我想匹配ac或bc怎么办?
Python code
import rere.search('(a|b)c','abc')


但是这里又出现了另一个问题:
如果我想提取'c':

Python code
import rere.search('(a|b)(c)','abc').group(1)


我忘记这个括号的学名是什么了,但是他的意思就是把匹配的内容提取出来,那么 这个功能和我前面提到的ac,bc问题的()的功能重叠了。


是不是我想的这样的呢?有没有其他的workaroud呢?

例子举的不好,希望已经表达清楚我的疑问了。

期待并感谢大家的解答!谢谢、

[解决办法]
貌似应该:

'a|bc':匹配 a 或者 bc
'(a|b)c':匹配 ac 或者 bc

最后一个没看的很明白,是不是下面这个意思:

Python code
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32Type "copyright", "credits" or "license()" for more information.>>> import re>>> s = 'abcdefg'>>> t = re.search(r'(?:a|b)(c)', s)>>> print t.groups()('c',)>>> 

读书人网 >perl python

热点推荐