タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

正規表現に関するtgkのブックマーク (5)

  • [正規表現] .*?は最短マッチではない - Qiita

    # Ruby 2.4.2 "<<<hoge>>>".match(/<.*?>/)[0] #=> "<<<hoge>" なぜこうなるのか .*?は、 最短マッチ 最左マッチ の2つの原則に従い、しかも最左マッチの原則の方が優先順位としては高いからである。 より嚙み砕いて言うと <.*?>は先頭の<がマッチした後に、そこからマッチする部分をできるだけ最小化しようと試みる。 <<<hoge>>>に対して<.*?>をパターンマッチさせる際に行われる実際の処理の流れは、次のようなイメージになるだろう。 < # <までマッチ << # <>のマッチに失敗、.の数を増やしてリトライ << # <.までマッチ <<< # <.>のマッチに失敗、.の数を増やしてリトライ <<< # <..までマッチ <<<h # <..>のマッチに失敗、.の数を増やしてリトライ <<<h # <...までマッチ <<<ho

    [正規表現] .*?は最短マッチではない - Qiita
    tgk
    tgk 2023/01/22
    ?は結果の右側をカットするが左は縮めてくれない。最左マッチと思えばよい
  • .NET 正規表現での文字クラス - .NET

    文字クラスは、いずれかが入力文字列に含まれると一致と見なされる文字のセットを定義します。 .NET の正規表現言語では、次の文字クラスがサポートされます。 文字グループの肯定。 入力文字列内の文字が指定した文字のセットのいずれかと一致する必要があります。 詳細については、「文字グループの肯定」を参照してください。 文字グループの否定。 入力文字列内の文字が指定した文字のセットのいずれかと一致しない必要があります。 詳細については、「文字グループの否定」を参照してください。 任意の文字。 正規表現の . (ドットまたはピリオド) 文字は、\n を除く任意の文字と一致するワイルドカード文字です。 詳細については、「任意の文字」を参照してください。 Unicode 一般カテゴリまたは名前付きブロック。 入力文字列内の文字が一致と見なされるには、その文字が特定の Unicode カテゴリのメンバー

    .NET 正規表現での文字クラス - .NET
    tgk
    tgk 2020/10/08
    「文字クラス減算によって、ある文字クラスから別の文字クラスの文字を除外した文字セットが生成されます」すごい
  • 4. Unicode — Programming with Unicode

    tgk
    tgk 2020/09/24
    7つのUnicode Categories
  • Regex Tutorial - Unicode Characters and Properties

    Unicode is a character set that aims to define all characters and glyphs from all human languages, living and dead. With more and more software being required to support multiple languages, or even just any language, Unicode has been strongly gaining popularity in recent years. Using different character sets for different languages is simply too cumbersome for programmers and users. Unfortunately,

    tgk
    tgk 2020/09/24
    "\p{Cn} or \p{Unassigned}: any code point to which no character has been assigned." > U+074Cのような「シリア文字のBlock内だが、文字がアサインされていない」コードポイントを引っ掛けられる
  • Rubyの正規表現は`&&`のintersectで文字セットの「差分」を取れる|TechRacho by BPS株式会社

    正規表現記事を書いていて発見したregular-expressions.info↓という神サイトをちびちび読んでいました。 regular-expressions.infoより すると、「Ruby(つまりOnigmo)では以下のように&&という特殊なメタキャラクタを使うと、文字セットのintersect演算、つまり共通集合を取れる」という記述が目に入り、思わず息を呑みました。 [class&&[intersect]] 文字セットの演算機能といえば、.NET Frameworkの[class-[class]]という記法で文字セットの差分を取る機能ぐらいしかないと思っていたのが、まさかRubyにもあこがれの文字セット演算があるなんて。目を疑いました。早速試しました。 今さらですが、正規表現の文字セットと文字クラスは同じものを指します。 1. 文字セットのintersect 急いで作ったので実用

    Rubyの正規表現は`&&`のintersectで文字セットの「差分」を取れる|TechRacho by BPS株式会社
  • 1