中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python入門進階教程-原子

發布時間:2020-06-11 16:13:25 來源:網絡 閱讀:269 作者:樂趣碼農 欄目:編程語言

在正則表達式中,存在操作符和操作元,操作符存在優先級,操作元被稱做原子
操作符優先級(由高到低)
(先不用在意操作符的名稱,雖然也看不太懂)
Python入門進階教程-原子

1. 轉義符號 (Escaping Symbol):
    \
2. 分組、捕獲 (Grouping or Capturing):
    (...) (?:...) (?=...) (?!...) (?<=...) (?<!...)
3. 數量 (Quantifiers)
    a* a+ a? a{n, m}
4. 序列與定位(Sequence and Anchor)
    abc ^ $ \b \B
5. 或(Alternation)
    a|b|c
6. 原子 (Atoms)
    a [^abc] \t \r \n \d \D \s \S \w \W .

1. 本義字符

代表的就是它們的字面值,包括從 a 到 z,A 到 Z,0 到 9,還有 _
*注: 非本義字符:\ + . ? - ^ $ | ( ) [ ] { } < >,建議都直接加上轉義符號 \ 來表示**

2 集合原子

標示集合原子,使用方括號 []。
即[abc] 的意思是說,“a or b or c”,即,abc 中的任意一個字符。
在方括號中,我們可以使用兩個操作符:-(區間)和 ^(非)。

- [a-z] 表示從小寫字母 a 到小寫字母 z 中的任意一個字符。
- [^abc] 表示 abc 以外的其它任意字符,即,非 [abc]。

舉:beg[iau]n 能夠代表 begin、began,以及 begun。

注:一個集合原子中,^ 符號只能用一次,只能緊跟在 [ 之后。否則不起作用

3. 類別原子

能夠代表 “一類字符” 的原子,它們都得使用轉義符號再加上另外一個符號表達
\d 任意數字;等價于 [0-9]
\D 任意非數字;等價于 [^0-9]
\w 任意本義字符;等價于 [a-zA-Z0-9_]
\W 任意非本義字符;等價于 [^a-zA-Z0-9_]
\s 任意空白;相當于 [ \f\n\r\t\v](注意,方括號內第一個字符是空格符號)
\S 任意非空白;相當于 [^ \f\n\r\t\v](注意,緊隨 ^ 之后的是一個空格符號)
.  除 \r \n 之外的任意字符;相當于 [^\r\n]

小技巧:d 是 digits;w 是 word characters;s 是 spaces

# 舉例
import re

str = '<dl>(843) 542-4256</dl> <dl>(431) 270-9664</dl>'
# 找到字符串中所有"數字-數字"格式的字符,其中第一個數字是三位數,第二個數字是四位數
pttn = r'\d\d\d\-\d\d\d\d'
print(re.findall(pttn, str))

# 輸出
['542-4256', '270-9664']

4. 邊界原子

用邊界原子指定邊界。也可以稱作 “定位操作符”。

^ 匹配被搜索字符串的開始位置;
$ 匹配被搜索字符串的結束位置;
\b 匹配單詞的邊界;er\b,能匹配 coder 中的 er,卻不能匹配 error 中的 er;
\B 匹配非單詞邊界;er\B,能匹配 error 中的 er,卻不能匹配 coder 中的 er。

注:^ 和 $ 在 Python 語言中被 \A 和 \Z 替代。

# 舉例
import re

str = 'never ever verb however everest'
pttn = r'er\b'
print(re.findall(pttn, str))
pttn = r'er\B'
print(re.findall(pttn, str))

# 輸出
['er', 'er', 'er']
['er', 'er']

5. 組合原子

用圓括號 () 將多個單字符原子組合成一個原子,() 內的字符串將被當作一整個原子

注意:
er 是兩個原子,'e' 和緊隨其后的 'r'
[er] 是一個原子,或者 'e' 或者 'r';
(er) 是一個原子,'er'

6. 數量操作符

數量操作符有:+ ? * {n, m}。用來限定位于它們之前的原子允許出現的個數,不加數量限定則代表出現一次且僅出現一次

+ 代表前面的原子必須至少出現一次,即: 出現次數 ≧ 1
? 代表前面的原子最多只可以出現一次,即:0 ≦ 出現次數 ≦ 1
* 代表前面的原子可以不出現,也可以出現一次或者多次,即: 出現次數 ≧ 0
{n} 代表之前的原子出現確定的 n 次;
{n,} 代表之前的原子出現至少 n 次;
{n, m} 代表之前的原子出現至少 n 次,至多 m 次

# 匹配字符串
str = ['google', 'gooogle', 'goooogle', 'goooooogle']

# 遍歷字符串
for str_per in str:
    # o最少出現一次 
    pttn = r'go+gle'
    print(re.findall(pttn, str_per))

    # o最多出現一次 
    pttn = r'go?gle'
    print(re.findall(pttn, str_per))

    # o出現次數≧ 0
    pttn = r'go?gle'
    print(re.findall(pttn, str_per))

    # o出現至少2次,至多5次
    pttn = r'go{2,5}gle'
    print(re.findall(pttn, str_per))

    # 進階:聯立組合原子
    # g 或者 o 最少出現一次
    pttn = r'[go]+gle'

    # go 最少出現一次
    pttn = r'(go)+gle'
    print(re.findall(pttn, str_per))
  1. 或操作符 |

或操作符 | 是所有操作符中優先級最低的

import re

str = 'begin began begun begins beginn'
pttn = r'begin|began|begun'
print(re.findall(pttn, str))

# 輸出
['begin', 'began', 'begun', 'begin', 'begin']

注:方括號的 | 不被當作特殊符號,而是被當作 | 這個符號本身。在方括號中的圓括號,也被當作圓括號 () 本身,而無分組含義。

關于更多python進階知識,敬請期待!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

孝义市| 都昌县| 大足县| 天等县| 通海县| 平顶山市| 阜阳市| 肃宁县| 绥芬河市| 玛纳斯县| 寿宁县| 湘西| 庆元县| 思南县| 辽阳市| 双峰县| 灵山县| 中西区| 章丘市| 巫溪县| 揭东县| 孙吴县| 宁阳县| 茂名市| 南江县| 柞水县| 武威市| 孟州市| 彭阳县| 稻城县| 阆中市| 东宁县| 宜昌市| 长春市| 赤峰市| 法库县| 徐闻县| 宝清县| 绵阳市| 凌云县| 台中县|