Upgrade to Pro — share decks privately, control downloads, hide ads and more …

正規表現の少し進んだ機能 / regex lookahead

正規表現の少し進んだ機能 / regex lookahead

USAMI Kosuke

August 19, 2022
Tweet

More Decks by USAMI Kosuke

Other Decks in Programming

Transcript

  1. 正規表現の
    少し進んだ機能
    宇佐見公輔
    /
    株式会社ゆめみ

    View full-size slide

  2. 自己紹介
    宇佐見公輔 /
    株式会社ゆめみ / iOS
    テックリード
    大阪在住、最寄のゆめみオフィスは京都(まだ物理出社してないが)
    来月のiOSDC
    にパンフレット記事寄稿、トーク登壇予定
    来月の技術書典に出展予定

    View full-size slide

  3. 正規表現を再勉強中
    Swift
    で正規表現が言語組み込みになる
    この機会に、正規表現を再勉強
    意外と知らない機能がいろいろあった
    例:名前付きキャプチャ、後方参照
    書いた:Swift Regex
    でキャプチャや名前付きキャプチャを使う - Qiita

    View full-size slide

  4. 正規表現の基本
    文字列のパターンマッチ
    部分文字列の抽出(キャプチャ)

    View full-size slide

  5. 位置へのマッチ
    アンカー:「文字列」でなく「位置」にマッチする
    長さ0
    の文字列にマッチすると考えて、ゼロ幅アサーションとも呼ばれる
    ^
    (先頭) $
    (末尾) \b
    (単語の境界)など
    ` ` ` ` ` `

    View full-size slide

  6. 少し進んだ機能の紹介
    先読み(lookahead

    後読み(lookbehind

    View full-size slide

  7. 先読み
    先読み(lookahead
    )は、位置にマッチする記法の一種で、位置の指定に正
    規表現が使える。 (?=
    と )
    で囲む。
    ` ` ` `
    a(?=..d)


    「a
    」の次に「任意の2
    文字+d
    」が来る場合に限り、「a
    」にマッチする

    View full-size slide

  8. 後読み
    (?=regex) :
    先読み。次に regex
    がくる位置にマッチ。
    (?<=regex) :
    後読み。前に regex
    がくる位置にマッチ。
    ` ` ` `
    ` ` ` `

    View full-size slide

  9. 否定先読み・否定後読み
    (?!regex) :
    否定先読み。次に regex
    がこない位置にマッチ。
    (?否定後読み。前に regex
    がこない位置にマッチ。
    ` ` ` `
    ` ` ` `

    View full-size slide

  10. 先読みが便利な場合
    (1)
    複数の正規表現すべてにマッチするか

    View full-size slide

  11. 先読みが便利な場合
    (2)
    数値の3
    桁ごとにカンマを挿入するコード
    → これ、どうなってるの?

    View full-size slide

  12. 先読みが便利な場合
    (2)
    解説

    View full-size slide

  13. 便利ツール

    View full-size slide