我需要检查标题=“第1周”或标题=“第13周”的链接,我已经尝试了在互联网上找到的一些内容,但它不起作用:
那么,如果某个东西只有一个数字或两个数字,如何匹配呢?
使用零或一量词 (
?
),如下所示:
title="[Ww]eek [1-9][0-9]?"
这将匹配一个字符串,其中包含
title="
,后跟大写或小写 w
,后跟 eek
、空格和从 1
到 9
的数字,后跟可选数字0
到 9
,然后是 "
。
您还应该考虑在您选择的语言中使用不区分大小写的标志。
答案取决于您使用正则表达式的上下文。
?
将匹配0或1个字符。?
也将匹配 0 或 1 个字符。\=
将匹配 0 或 1 个字符。所以答案是:
Python regex: Week 13?
JavaScript regex: /Week 13?/
vi regex: Week 13\=
哪个将匹配两者:
Week 1
Week 13
对于 Java 尝试这个:
String regex = "[\\d{2}]+";
为了匹配一位或两位数字,您可以使用以下模式之一:
(?<!\d)\d{1,2}(?!\d)
- 此表达式查找未用任何其他数字括起来的 1 或 2 个数字,因此它将在 a12b
、1
、12
、a_1_b
、x_23
字符串中查找匹配项。请参阅 正则表达式演示。
\b\d{1,2}\b
- 此正则表达式与上面的正则表达式类似,但有一个例外:如果两端都有字母或下划线,则它将不匹配。因此,它将匹配 -1-
、,23,
,但不会匹配 a_23_b
或 a12b
。请参阅 正则表达式演示。
(?<!\S)\d{1,2}(?!\S)
- 此表达式将仅在空白字符或字符串的开头/结尾(在空白边界内)之间匹配一位或两位数字。因此,它将在 a 12 b
、a 12
、12 b
中匹配,但在 12a
、-12-
、12_
中不匹配。请参阅 正则表达式演示。
(?<!\d)(?<!\d\.)\d{1,2}(?!\.?\d)
- 此正则表达式将匹配不属于数字一部分的一两个数字,因为之前不能有数字或数字后跟点(您可能需要调整其他小数点分隔符的模式)两位数字,并且两位数字后面不能有点和数字,也不能只有数字。请参阅 正则表达式演示。
是的,如果您的字符串只是这两个数字,请使用锚点,
^\d{1,2}$
或\A\d{1,2}\z
(Python中的\A\d{1,2}\Z
re
)。注意:如果您想处理多行输入,则首选 \z
(Python 中的 \Z
re
)。请参阅 正则表达式演示。