Trouble with regular expressions
google at mrabarnett.plus.com
Sat Feb 7 09:37:31 EST 2009
> I'm quite new to regular expressions, and I wonder if anyone here
> could help me out.
> I'm looking to split strings that ideally look like this: "Update: New
> item (Household)" into a group.
> This expression works ok: '^(Update:)?(.*)(\(.*\))$' - it returns
> ("Update", "New item", "(Household)")
> Some strings will look like this however: "Update: New item (item)
> (Household)". The expression above still does its job, as it returns
> ("Update", "New item (item)", "(Household)").
> It does not work however when there is no text in parentheses (eg
> "Update: new item"). How can I get the expression to return a tuple
> such as ("Update:", "new item", None)?
You need to make the last group optional and also make the middle group
(?:...) is the non-capturing version of (...).
If you don't make the middle group lazy then it'll capture the rest of
the string and the last group would never match anything!
More information about the Python-list