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
# 此時我們就將我們的代碼或是我們需要管理的文件放到了網上的服務器了,本地庫也更新了

這裏寫圖片描述

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