求助,请教:正则表达式中的“或”'|'的作用域以及“或”和()的冲突。
目前在用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',)>>>