正则表达式在“x”之前和之后找到四位数?

时间:2010-12-30 15:45:11

标签: regex

在以下字符串中找到“x”前后四位数的正则表达式是什么:

234a2343x2834o234 --> 2343, 2834
iur3333x44445555 --> 3333, 4444
owier3423x23sd --> 3423, no match

3 个答案:

答案 0 :(得分:6)

使用Perl正则表达式:

/(\d{4})?x(\d{4})?/

请注意每个4位数字的捕获组和?。您没有指定,但如果左侧的数字是强制性的,请删除第一个?

答案 1 :(得分:0)

(\d{4})x(\d{4})?适用于Perl兼容的正则表达式。

答案 2 :(得分:0)

([0-9]{4})?x([0-9]{4})?

参见rubular:http://www.rubular.com/r/PhsyDdc1ad

这将返回第一个x之前和之后的四位数字。如果少于4位,如第三个示例所示,将有一个空组,但正则表达式仍将匹配,可能会返回x另一侧的数字。

请注意,某些正则表达式引擎定义字符组\d以包含数字0,1,...,9。如果您正在使用其中一个,则可以将表达式压缩为:

(\d{4})?x(\d{4})?