python-正则表达式、git常用命令

2018.03.19
author:wills

假如我们需要匹配一个字符串,假如需要判断 ‘a’ 有没有在‘jdlgjkhkjcvnieja‘ 这个字符串里面,我们可以用
if 'a' in 'jdlgjkhkjcvnieja':
    print('a')
else:
    print('没有找到a')

但是当我们需要匹配的内容变得很复杂比如:()(/-、?《》),这些乱七八糟的的字符都掺杂其中,匹配对象也变成了一个文本,或者文章。那这个时候就需要用到正则表达式。比如我们要匹配一个5-12位的qq号码。我们可以写个函数:

def checkqq(qq):
    if len(qq) < 5 or len(qq) > 12:
        return False
    for q in qq:
        if not '0' <= q <= '9':
            return False
    return True

qq = input('请输入qq号')
if checkqq(qq):
    print('这是正确的qq号')
else:
    print('这不是正确的qq号')

看到这里写的函数了吗,比较繁琐是不是,那如果是匹配密码呢?密码可是数字,字母,下划线都可以的。但是如果我们使用正则表达式,判断qq号就会很简单

import re

def checkqq(qq):

    m = re.match(r'\d{5,12}$', qq)
    if m :
        return True
    else:
        return False

qq = input('请输入qq号')
if checkqq(qq):
    print('这是正确的qq号')
else:
    print('这不是正确的qq号')

用了正则表达式,我们就只需要导入re模块(正则表达式的模块,regular expression的缩写)写1行就够了,下面我们来看看正则表达式有哪些标准符合。

\b 元字符(metacharacter)代表单词开头or结尾,匹配一个位置出来
\B 反义代码: 匹配任意不是单词开头或结束的位置
. 限定符:匹配除了换行符以外的任意一个字符
* 限定符:不代表字符,代表*前面的内容可以重复使用任意次,使整个表达式得到匹配
? 限定符:重复 0 或者 1 次
{n}限定符:重复n次
{n,} 限定符:重复n次 or 更多次
{n,m}限定符; 重复n到m次
\d 元字符:匹配一位数字(0.1.2…)
\D 反义代码: 匹配任意非数字字符
\w 元字符:匹配 字母 数字 下划线 汉字
\W 反义代码: 匹配任意不是 字母 数字 下划线 汉字
\s 元字符:匹配任意的空白符【空格 制表符Tab 换行符 中文全角空格】
\S 反义代码: 匹配任意不是空白符的代码
^ 元字符: 匹配字符串开始
$ 元字符: 匹配字符串结束
[^x] 反义代码: 匹配除了x以外的任意字符
[^aeiou] 反义代码: 匹配除了aeiou以外任意字符
| 表示条件判断符,yes取|前面的表达式,no取后面的表达式
()表示分支语句

所有的限定符加?就可以表示懒惰处理。例如,不管重复多少次,尽量少重复。不加?表示贪婪处理,尽量多重复。除此之外还有一种优先级更高的处理办法【最开始的匹配拥有最高优先权】
The match that begins earliest wins。
要查找元字符使用\转义,如:* . 查找\使用 \

\d+ 表示匹配1个或更多连续的数字
+ 与 * 类似,但是*匹配重复任意次(可以是0),+表示重复一次或者更多

def check_phone_number(num):
    dianxing = re.compile(r'(^133|153\d{8}$)|(^177|18[019]\d{8}$)')
    liantong = re.compile(r'(^145|176\d{8}$)|(^13[012]|1[58][56]\d{8}$)')
    yidong = re.compile(r'(^147|178\d{8}$)|(^15[012789]|13[4-9]\d{8}$)|(^18[23478]\d{8}$)')
    if liantong.match(num):
        return '这是联通号码'
    if dianxing.match(num):
        return '这是电信号码'
    if yidong.match(num):
        return '这是移动号码'
    return '这不是正确的电话号码'


def main():
    number = input('输入电话号码:')
    print(check_phone_number(number))

上面是我写的一个判断号吗运营商的表达式,作用可以达到,但是就是比较繁琐。运营商号段如下图

电话号码号段

随着时间的推移,现在我们呢写的代码也也来越多,我们就需要将自己的代码好好的管理一下,一个比较好使的工具叫Git,我们可以把自己的代码保存到Git库里面,随时保持更新

首先肯定是安装git模块,安装好之后可以在命令行输入>git --version
敲回车之后如果显示了git版本就表示安装ok了。然后我们需要去coding官网申请一个账号,并且建立自己的项目。我先建立一个test1
的项目如图

acdetest

然后我把这个项目巴拉到我的桌面上,怎么操作呢?

# win+R 进入命令操作界面
>cd Desktop
# 进入桌面路径
>git clone https://git.coding.net/createaworld/acde.git
# 这步操作是将远程项目库拷贝下来,虽然还是空的,网址是上面那副图的红框位置
>cd acde
> git init
# 初始化
>git add .
# 将所有我们放到acde文件夹的东西导入git管理,只导入一个也可以
# 导入一个写 git add 文件名 就好了
>git status 
# 查看导入管理的文件状态是不是成功导入了

这里写图片描述

# 到了这里就要注意下一步,下一步是真正将文件放到git本地库里面
>git commit -m '进行了什么操作修改'
# 分号里面的内容就是写你进行了什么修改,是修复了程序的bug还是实现了什么新功能
>git log
# 可以看到导入本地库之后生成的独一无二版本号,以后就可以凭借这个版本号回到以前的版本

>git remote add origin https://git.coding.net/createaworld/acde.git
>git push -u origin master
# 此时我们就将我们的代码或是我们需要管理的文件放到了网上的服务器了,本地库也更新了

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章