超Easy正则表达式实战教程---入门 :匹配多种形式浮点数

超Easy正则表达式实战教程—入门 :匹配多种形式浮点数

浮点数多种形式,包括如下:

3.6 , +3.14 , -3.14 , .7

正确匹配上述浮点数,正确姿势如下:

~

[+-]?[0-9]+.[0-9]+|\.[0-9]+

~

若有疑惑,或新手刚上路,可往下看。

该博客是用python语言写的,边学边用,通俗易懂,可以让你轻松学到

~

r 、[…] 、 + 、 \ 、 ? 、 |

六种用法。

import re

#方便展示而写的函数
def match_float(pattern,floats):
    matched=[]
    failed=[]
    for float in floats:
        result=re.search(pattern,float)
        if result!=None and result.group()==float:
            matched.append(float)
        else:
            failed.append(float)
    print('matched:',matched)
    print('failed',failed)

floats=['3.6','+3.14','-3.14','.7']

1 匹配小数

pattern1= r'[0-9]+\.[0-9]+' 
match_float(pattern1,floats)

output:

matched: ['3.6']
failed ['+3.14', '-3.14', '.7']

小数形式诸如: **.** ,匹配的正确姿势为:

~

r’[0-9]+.[0-9]+’

解释:

  • \. 的含义 :诸如’ . * ? ’ 等等,在正则表达式中是有特殊含义的。若想匹配其原字符,即匹配 ’ . * ? ’ 本身,则需要在其前加上 ’ \ ‘,即:’ \. ’ ’ \* ‘

  • r 的用途 :为了让’ \ ‘能够表达其作用,则必须在正则表达式(字符串)前加上 ’ r ‘

  • [0-9] 的含义 :[…] 表示只匹配中括号里的一个字符,[0-9] 即匹配0~9中的一个数字,等价于[0123456789],’df2’匹配2,’df22’匹配2,2,即俩次

  • + 的含义 :+ 表示匹配前一个字符一次或则多次以上,故 ’ [0-9]+ ‘从 ‘22.123’ 中匹配 ‘22’ , ‘123’

2 匹配带有正负号的小数

  • 若匹配 ‘+’ 则用 ‘\+’ 表达式,而不是 ‘+’,因为 ‘+’ 有其特殊含义

  • ? 的含义: 匹配带有 ‘+’ 的小数同时,也要匹配不带 ‘+’ 的小数,则用 ‘?’,表示匹配0次或者1次

故:

pattern2= r'\+?[0-9]+\.[0-9]+' 
match_float(pattern2,floats)

output:

matched: ['3.6', '+3.14']
failed ['-3.14', '.7']

那 ‘+’ ‘-’ 号都要匹配呢?聪明的童鞋很容易解锁了新姿势:

~

r’[+-]?[0-9]+\.[0-9]+’

pattern3= r'[+-]?[0-9]+\.[0-9]+' 
match_float(pattern3,floats)

output:

matched: ['3.6', '+3.14', '-3.14']
failed ['.7']

3 匹配 .** 形式的小数

有些浮点数形式可能是这样的:.7 , .123 ,省略了前面的0,那又如何匹配?正确的姿势如下:

~

r’[+-]?[0-9]+.[0-9]+|\.[0-9]+’

  • | 的含义:正则表达式诸如 ‘a|b’ 若用 a 匹配不成功,则尝试用 b 去匹配

  • 要注意 | 是怎么分割的,’[+-]?[0-9]+.[0-9]+|.[0-9]+’ 是分成’[+-]?[0-9]+.[0-9]+’ 和 ‘.[0-9]+’

pattern4= r'[+-]?[0-9]+\.[0-9]+|\.[0-9]+' 
match_float(pattern4,floats)

output:

matched: ['3.6', '+3.14', '-3.14', '.7']
failed []

附上精彩的菜鸟教程:

正则基础:http://www.runoob.com/regexp/regexp-tutorial.html

python下的正则:http://www.runoob.com/python/python-reg-expressions.html

谢谢大家的浏览,
希望我的努力能帮助到您,
共勉!

你可能感兴趣的:(Python,数据挖掘,数学建模,爬虫,正则表达式,匹配浮点数)