V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
jprovim

用 Regex 來檢查 Prime

  •  
  •   jprovim · Feb 13, 2015 · 2792 views
    This topic created in 4105 days ago, the information mentioned may be changed or developed.

    /^1?$|^(11+?)\1+$/

    來源 原理

    6 replies    2015-02-13 09:45:19 +08:00
    xjx0524
        1
    xjx0524  
       Feb 13, 2015
    这个表达式匹配的是非质数个1的串
    ‘|’ 前面是匹配 ‘’ 和 ‘1’
    后面原理是 括号内分组为[2,∞)个1,‘\1+’表示匹配[1,∞)个前面的分组,来达到倍数的目的
    FrankFang128
        2
    FrankFang128  
       Feb 13, 2015 via Android
    把数字N变成N个棍子,再看能不能完全分组
    FrankFang128
        3
    FrankFang128  
       Feb 13, 2015 via Android
    Perl 真是。。。
    reorx
        4
    reorx  
       Feb 13, 2015
    之前遇到一个题是匹配非质数个字母 x:

    http://regex.alf.nu/6

    Match:

    xx
    xxx
    xxxxx
    xxxxxxx
    xxxxxxxxxxx

    Not (质数):

    xxxx
    xxxxxx
    xxxxxxxx
    xxxxxxxxx
    xxxxxxxxxx

    最后想半天弄出一个 ^(?!(xx+)\1+$) ,不知道是不是最优解。

    另外 lz 这个正则里有个 +? ,有些看不懂,+ 是匹配一个或多个,? 是匹配零或一个,能混用吗?
    reorx
        5
    reorx  
       Feb 13, 2015
    车上打字迷糊了……上题是匹配质数个字母 x,Match 那里是质数……
    oott123
        6
    oott123  
       Feb 13, 2015 via Android
    @reorx 我猜 +? 是懒惰匹配…
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3453 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:21 · PVG 19:21 · LAX 04:21 · JFK 07:21
    ♥ Do have faith in what you're doing.