Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
325 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"
See Question&Answers more detail:os

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

1 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...