正则表达式:1 个数字或 2 个数字

问题描述 投票:0回答:6

我需要检查标题=“第1周”或标题=“第13周”的链接,我已经尝试了在互联网上找到的一些内容,但它不起作用:

http://regexr.com?38bet

那么,如果某个东西只有一个数字或两个数字,如何匹配呢?

regex expression
6个回答
6
投票

您可以使用

\d{1,2}
这将匹配 1 到 2 位数字。

我还发现,当我需要编写正则表达式时,以下this网站非常有帮助。


2
投票

使用零或一量词 (

?
),如下所示:

title="[Ww]eek [1-9][0-9]?"

这将匹配一个字符串,其中包含

title="
,后跟大写或小写
w
,后跟
eek
、空格和从
1
9
的数字,后跟可选数字
0
9
,然后是
"

您还应该考虑在您选择的语言中使用不区分大小写的标志。


0
投票

答案取决于您使用正则表达式的上下文。

  • 在Python中,
    ?
    将匹配0或1个字符。
  • 在 JavaScript 中,
    ?
    也将匹配 0 或 1 个字符。
  • 在 vi 中,
    \=
    将匹配 0 或 1 个字符。

所以答案是:

Python regex:     Week 13?
JavaScript regex: /Week 13?/
vi regex:         Week 13\=

哪个将匹配两者:

Week 1
Week 13

0
投票

对于 Java 尝试这个:

String regex = "[\\d{2}]+";

0
投票

试试这个:

title="[Ww]eek (\d+)\.pdf"

正则表达式:

http://regexr.com?38bfc

比赛:

1 
13

0
投票

为了匹配一位或两位数字,您可以使用以下模式之一:

  1. (?<!\d)\d{1,2}(?!\d)
    - 此表达式查找未用任何其他数字括起来的 1 或 2 个数字,因此它将在
    a12b
    1
    12
    a_1_b
    x_23
    字符串中查找匹配项。请参阅 正则表达式演示

  2. \b\d{1,2}\b
    - 此正则表达式与上面的正则表达式类似,但有一个例外:如果两端都有字母或下划线,则它将不匹配。因此,它将匹配
    -1-
    ,23,
    ,但不会匹配
    a_23_b
    a12b
    。请参阅 正则表达式演示

  3. (?<!\S)\d{1,2}(?!\S)
    - 此表达式将仅在空白字符或字符串的开头/结尾(在空白边界内)之间匹配一位或两位数字。因此,它将在
    a 12 b
    a 12
    12 b
    中匹配,但在
    12a
    -12-
    12_
    中不匹配。请参阅 正则表达式演示

  4. (?<!\d)(?<!\d\.)\d{1,2}(?!\.?\d)
    - 此正则表达式将匹配不属于数字一部分的一两个数字,因为之前不能有数字或数字后跟点(您可能需要调整其他小数点分隔符的模式)两位数字,并且两位数字后面不能有点和数字,也不能只有数字。请参阅 正则表达式演示

  5. 是的,如果您的字符串只是这两个数字,请使用锚点,

    ^\d{1,2}$
    \A\d{1,2}\z
    (Python中的
    \A\d{1,2}\Z
    re
    )。注意:如果您想处理多行输入,则首选
    \z
    (Python 中的
    \Z
    re
    )。请参阅 正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.