正则表达式匹配:090129 YBB 100

时间:2009-03-16 04:56:39

标签: regex

编写一个快速应用程序来帮助我过滤文本文件。

我正在逐行读取文本文件,需要匹配一系列如下所示的字符:090129 YBB 100

第一组090129将是6个数字(0-9)。其次是空格,然后YBB - 永远。之后,另一个空格,然后2-3个数字(0-9)。

此模式也将始终是字符串的第一部分。

这是我的黑客攻击:

^[0-9][0-9][0-9] (YBB) [0-9][0-9][0-9]\b

当然,不起作用......但我是一个正则表达式的菜鸟。提前谢谢!

4 个答案:

答案 0 :(得分:5)

这里是:

^([\d]{6})\s(?:YBB)\s([\d]{2,3})\b

说明:

a)从行首开始。 b)匹配6位数。保存到backref 1。 c)匹配空间。 d)匹配“YBB”。不要保存到backref。 e)匹配空间。 f)匹配2-3位数。保存到backref 2。

当然,知道要将这种模式的哪一部分检索到反向引用中非常重要。如果您提供该信息,我可以编辑我的帖子。

答案 1 :(得分:2)

在Perl中,我会这样做:

^(\d{3}) YBB (\d{2,3})$

答案 2 :(得分:0)

答案 3 :(得分:0)

你说在YBB之前会有6位数,但你显示的正则表达式只有3位。