Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use regex with optional characters in python?

Tags:

python

regex

Say I have a string

"3434.35353" 

and another string

"3593" 

How do I make a single regular expression that is able to match both without me having to set the pattern to something else if the other fails? I know \d+ would match the 3593, but it would not do anything for the 3434.35353, but (\d+\.\d+) would only match the one with the decimal and return no matches found for the 3593.

I expect m.group(1) to return:

"3434.35353" 

or

"3593" 
like image 688
Rolando Avatar asked Mar 27 '12 14:03

Rolando


People also ask

How do I make a group optional in regex Python?

So to make any group optional, we need to have to put a “?” after the pattern or group. This question mark makes the preceding group or pattern optional. This question mark is also known as a quantifier.

What does '$' mean in regex?

$ means "Match the end of the string" (the position after the last character in the string).

Can regex be used with replace in Python?

Regex can be used to perform various tasks in Python. It is used to do a search and replace operations, replace patterns in text, check if a string contains the specific pattern.


Video Answer


1 Answers

You can put a ? after a group of characters to make it optional.

You want a dot followed by any number of digits \.\d+, grouped together (\.\d+), optionally (\.\d+)?. Stick that in your pattern:

import re print re.match("(\d+(\.\d+)?)", "3434.35353").group(1) 
3434.35353 
print re.match("(\d+(\.\d+)?)", "3434").group(1) 
3434 
like image 127
Jeremy Avatar answered Sep 24 '22 15:09

Jeremy