编写一个快速应用程序来帮助我过滤文本文件。
我正在逐行读取文本文件,需要匹配一系列如下所示的字符: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
当然,不起作用......但我是一个正则表达式的菜鸟。提前谢谢!
答案 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)
此webtool可能可以为您提供帮助:http://www.txt2re.com/
答案 3 :(得分:0)
你说在YBB之前会有6位数,但你显示的正则表达式只有3位。