match 函式

  1. 範例:match 函式 「從字串開始位置」找正規表示式匹配的字串,函式回傳匹配的 object,需要使用 group(n) 方法取出匹配的字串,其中括號內的 n 為匹配的第 n 分組,不指定則輸出全部分組。
    [dywang@deyu zzz]$ cat re1.py 
    #!/usr/bin/python3
    import re, sys
    
    str = sys.argv[1]
    mo1 = re.match( r'^word', str, re.I)
    mo2 = re.match( r'abc$', str, re.I)
    mo3 = re.match( r'w.*', str, re.I)
    mo4 = re.match( r'[wd]', str, re.I)
    mo5 = re.match( r'[^wd]', str, re.I)
    if mo1: print('1. ^word :', mo1.group())
    if mo2: print('2. abc$ :', mo2.group())
    if mo3: print('3. w.* :', mo3.group())
    if mo4: print('4. [wd] :', mo4.group())
    if mo5: print('5. [^wd] :', mo5.group())
    
  2. 執行結果:
    1. 只匹配 1,3,4 三種,為什麼 2 abc$ 不匹配,4 [wd] 也只匹配 w 沒有 d? 因為 match 是從開頭找,也就是 abc$ 其實是 ^abc$
      [dywang@deyu zzz]$ ./re1.py "word abc"
      1. ^word : word
      3. w.* : word abc
      4. [wd] : w
      
    2. re.I 指定大小寫都可以,所以也匹配 1,3,4 三種。
      [dywang@deyu zzz]$ ./re1.py "Word abc"
      1. ^word : Word
      3. w.* : Word abc
      4. [wd] : W
      
    3. 因為 match 函式 「從字串開始位置」找正規表示式匹配的字串,也就是已經預設 ^ 開頭,此例中 pattern r'abc$' 等效 r'^abc$'
      [dywang@deyu zzz]$ ./re1.py "abc"
      2. abc$ : abc
      5. [^wd] : a
      
    4. 字串 "abc word",abc 不是結尾,所以不匹配,開頭是 a,匹配 [^wd] 開頭不是 w 或 d。
      [dywang@deyu zzz]$ ./re1.py "abc word"
      5. [^wd] : a