正则表达式必须符合两个条件

时间:2013-12-27 19:52:23

标签: regex

我一直试图在两个要求上匹配线,但似乎无法将两者结合起来获得匹配。

我必须 S OZN ,然后搜索 CME 2#1#1 。我尝试使用 S OZN(CME 2 \ d + 1 \ d + 1),其中#是一个通常带有7个数字但没有匹配的数字。

一些示例数据。我用粗体突出显示了我的比赛位置。这些不是整条线。这些行来自log4net文件。我已经删除了适合此页面的时间戳。

S OZN T $ 116700 T $ 123600 12/27/2013 1449025 3559247 0.015625 CME 2 3451471 1 3451026 1

S OZB U3 116702 U3 123602 12/27/2013 1449012 3532393 0.015625 CME 2 3451048 1 3451491 -1

取值OZN T $一十一万六千七T $ 12.36万2013年12月27日1449025 3578191 0.015625的 CME 2 3538674 1 1 3538771

S OZN T $ 116700 T $ 123600 12/27/2013 1449025 3612539 0.015625 CME 2 3451476 1 3451036 1

S OZN T $ 116700 T $ 123600 12/27/2013 1449025 3559770 0.015625 CME 2 3451193 1 3451519 -2

2 个答案:

答案 0 :(得分:1)

您需要跳过 S OZN CME 之间的大量文字。你有兴趣抓住这两个号码吗?

S OZN(.*?)CME\s2\s(\d+)\s1\s(\d+)

可能会完成这项工作(我没有检查过它......(。*?)应该是任何东西的“非贪婪”匹配,但不是CME)。如果它不起作用,并且有一个固定长度的文本要跳过,请尝试

S OZN(.{57})CME\s2\s(\d+)\s1\s(\d+)

如果我正确计算了长度。 2美元和3美元应该是你要追求的价值。

答案 1 :(得分:0)

根据您的试用版,此模式应解决它S OZN.*?(CME 2 \d+ 1 \d+ 1)