Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
172 views
in Technique[技术] by (71.8m points)

How to use regex with optional characters in python?

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"
question from:https://stackoverflow.com/questions/9891814/how-to-use-regex-with-optional-characters-in-python

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...