Skip to content

正規表現の {,n} という指定について #7

Closed

Description

@kariya-mitsuru

すみません、Issue でも何でもなくて単なるコメントなんですが…

PDF 版 P.127 の脚注(注 7)に

EREでは「n個以下」を{,n}と表せますが、筆者(上田)の手元のPCにインストールされているPCREのライブラリでは、表せませんでした。

との記載があったので気になって grep(1) のマニュアルを見たんですが、{,n} の箇所に This is a GNU extension. との記載がありました。
確かにこちらの最後の方の ERE_dupl_symbol を見ると POSIX 的には一つ目の数値は必須のようですね。

また、Perl の方は 5.32.1 のマニュアルには {,n} が無いのですが、最新版の 5.34.0 のマニュアルには {,n} があるので、PCRE もそのうち追いついて使えるようになるかもしれないですね。

Activity

  1. added
    コメント・感想コメントや感想、本書の内容のさらなる理解に繋がりそうな参考・補足情報
    on Oct 4, 2021
  2. greymd commented on Oct 4, 2021

    @greymd
    Contributor

    なるほど。

    個人的には、このようなコメント、参考情報についても Issue としては歓迎でございます。
    誌面では説明に焦点をあてている関係上、想定環境 (Ubuntu 20.04 LTS) での検証結果の紹介の記載にとどめている箇所が散見されるので。他の読者の方が見たときに、理解が深まるきっかけになりそうですし、情報交換、ひいてはより後刷りでの表現のブラッシュアップにもつながるかなと。

    ただ、内容に関するご質問や誤り報告とは区別してわかるように、専用のラベルを付けるべきかなと思いました。ということで仮おきで「補足情報」とつけてみました。
    ディスカッション、とか参考情報、とかもありでしょうか。。(他の方の意見もお伺いしたいところ)。

  3. greymd commented on Oct 4, 2021

    @greymd
    Contributor

    PCREでもこの表現使えると便利なんですけどね……
    最新の PCRE2 のIssueなどを眺める限りは対応する予定はなさそうですね。。
    doc上も現時点では仕様っぽいですね。
    https://github.com/PhilipHazel/pcre2/blob/0612ed77c2291575b02bb0ea260dfad4890cc347/doc/pcre2.txt#L7909

    {,6} is not a quantifier, but a literal string of four characters.

  4. ryuichiueda commented on Nov 4, 2021

    @ryuichiueda
    Contributor

    READMEにこのissueのリンクを貼ってcloseしても読めるようにしました。一旦クローズします。

  5. greymd commented on Nov 10, 2021

    @greymd
    Contributor

    ところで、下記のようにBREでもエスケープすればこの表現は使えるので、GNU 拡張でもあることを踏まえても、本書のこの表現はもう少し正確にする余地がありそうですね。

    ~ $ echo 12345 | grep -Go '[0-9]\{,3\}'
    123
    45
    

    man grep より、GNU grep だと BRE/ERE で機能上の違いはないのでそう言われればそう。

    grep understands three different versions of regular expression syntax: "basic" (BRE), "extended" (ERE) and "perl" (PCRE).
    In  GNU  grep  there  is  no  difference  in  available  functionality  between  basic  and  extended  syntaxes.  In other
    

    PCRE の文法は man pcresyntax で確認できるので、そこを見ても良さそう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    コメント・感想コメントや感想、本書の内容のさらなる理解に繋がりそうな参考・補足情報

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions