代码之家  ›  专栏  ›  技术社区  ›  shinjuo

与3到4位数字匹配的正则表达式

  •  0
  • shinjuo  · 技术社区  · 15 年前

    我正在学习正则表达式,我正在尝试查找这个字符串day1otlk_xxxx.gif 其中,4 x是3到4个随机数字。这就是我到目前为止拥有的东西,离我很近吗?

    qr/day1otlk_\d++\.gif/i
    
    5 回复  |  直到 7 年前
        1
  •  1
  •   muhmuhten    15 年前

    正则表达式应该是 /day1otlk_(\d{3,4})\.gif/ ,也许 /i 因为不敏感。如果它在一根绳子里,你可能会想要 /\bday1otlk_(\d{4})\.gif\b/ 而不是像 "asdjklfhlday1otlk_5242.gifiasdytoi" 你可能不想要。

    这个 {3,4} 意味着需要在3到4位之间,并且括号可以捕获\1或$1中的4位数字。

    (奖金联合国要求回答:如果你正好需要三个,或者说五个,你就不能这样做。 {3,5} 三点到五点之间。你需要 \d{3}\d{2}? 或者类似的东西。)

        2
  •  1
  •   Axeman maxelost    15 年前

    接近了。你有 \d 用于数字。

    你知道什么 range operator 对于正则表达式是?

        3
  •  1
  •   Steve Wortham    15 年前

    非常接近。应该这样做…

    day1otlk_\d{3,4}\.gif
    

    背带 {} 允许您指定范围内的重复字符数 {3,4} 或者一个精确的数字,比如 {4} .

        4
  •  1
  •   Eric Strom    15 年前

    指定带大括号的范围限定符:

    qr/day1otlk_\d{3,4}\.gif/i
    
        5
  •  1
  •   Bill the Lizard    15 年前

    您可以指定将有3或4位数字和以下内容:

    day1otlk_\d{3,4}\.gif
    

    这个 {} 是一个 repetition 修饰语。它比 * + . 您可以使用它来指定前面模式的精确重复次数或重复范围。

    a{m} -完全一样
    a{m,} -至少为
    a{m,n} -至少m,但最多n