On Jun 11, 9:41 pm, "Mark Tolonen" <metolone+gm...@gmail.com> wrote: > "meryl" <silverburgh.me...@gmail.com> wrote in message > > news:2d4d8624-043b-4f5f-ae2d-bf73bca3d...@p6g2000pre.googlegroups.com... > > > > > > > Hi, > > > I have this regular expression > > blockRE = re.compile(".*RenderBlock {\w+}") > > > it works if my source is "RenderBlock {CENTER}". > > > But I want it to work with > > 1. RenderTable {TABLE} > > > So i change the regexp to re.compile(".*Render[Block|Table] {\w+}"), > > but that breaks everything > > > 2. RenderBlock (CENTER) > > > So I change the regexp to re.compile(".*RenderBlock {|\(\w+}|\)"), > > that also breaks everything > > > Can you please tell me how to change my reg exp so that I can support > > all 3 cases: > > RenderTable {TABLE} > > RenderBlock (CENTER) > > RenderBlock {CENTER} > > [abcd] syntax matches a single character from the set. Use non-grouping > parentheses instead: > > -----------------------code---------------------- > import re > pat = re.compile(r'Render(?:Block|Table) (?:\(\w+\)|{\w+})') > > testdata = '''\ > RenderTable {TABLE} > RenderBlock (CENTER) > RenderBlock {CENTER} > RenderTable {TABLE) #shouldn't match > ''' > > print pat.findall(testdata) > --------------------------------------------------- > > Result: > > ['RenderTable {TABLE}', 'RenderBlock (CENTER)', 'RenderBlock {CENTER}'] > > -Mark
Thanks for both of your help. How can i modify the RegExp so that both RenderTable {TABLE} and RenderTable {TABLE} [text with a-zA-Z=SPACE0-9] will match I try adding ".*" at the end , but it ends up just matching the second one. Thanks again. -- http://mail.python.org/mailman/listinfo/python-list