width 正規表現 こんなことできないか

<li
正規表現 こんなことできないか
目次
  • 完全一致
  • 部分一致した単語を表示する
  • 行数を取得する

  • 完全一致

    置換をするときに部分一致でやると予想外の文字が変わって不都合がでることがあります。例えば
     abc py pySerial pySerialN
    pyだけを消去したいとします。
    
    org_text = r"abc py pySerial pySerialN"
    res = re.sub(r'py', "", org_text)
    
    結果:
    abc  Serial SerialN
    
    pyが全部消されてしまいました。pyだけを消去するにはpyに完全一致した文字のみ小今日するようにします。
    
    org_text = r"abc py pySerial pySerialN"
    res = re.sub(r'\bpy\b',"",  org_text)
    
    結果:
    abc  pySerial pySerialN
    
    期待通りpyだけ消去されました。
    完全一致にするには
    \b完全一致する文字列\b
    \bで囲みます。

    部分一致した単語を表示する
    abc py pySerial pySerialNをpyで検索したとき、pyが3つ表示されるだけす。 py pySerial pySerialNとpyに続く文字まで表示したいですね。
    
    org_text = r"abc py pyGame pySerialN"
    result = re.findall('(?=py)\w+', org_text)
    
    結果:
    ['py', 'pySerial', 'pySerialN']
    
    期待通りの結果です。
    pyの後ろだけ取得することもできます。
    
    org_text = r"abc py pyGame pySerialN"
    result = re.findall('(?<=py)\w+', org_text)
    
    結果:
    ['Game', 'SerialN']
    


    行数を取得する
    文字列の行数をC言語などで独自に実装するのが案外面倒です。しかし、正規表現を使えば簡単です。
    
    org_text = r"""abc 789 ssd
    hello 456 pySerial
    love pyGame.256
    """
    res = re.findall('\n', org_text)
    print(len(res))
    
    結果:
    3
    
    非常に簡単です。