我在一个文件中有一组行,用分号分隔,如下所示:
8=FIX.4.2;9=159;35=A;56=MBT;34=1;7202=asdf:asdf;52=20130624-04:10:00.843;43=Y;98=0;10=000;Timestamp=Fri July 25 1958 16:12:52:112545;MsgDirection=1;
我想要的是整个消息,直到10=000;值7202,即asdf:asdf。你知道吗
我知道了:
(^.*000;)
根据regex的说法,这应该能让我在10=000之前完成整条生产线;。太棒了。但如果我这么做:
(^.*000;)(7202=.*;)
根据regex101.com的说法,我什么都不匹配。你知道吗
我不知道为什么添加第二个分组会使整个表达式无效。你知道吗
这方面的任何帮助都会很好。你知道吗
谢谢
第一版问题的答案
“我正在尝试将regex与python结合使用,以便从7202=中提取数据,因此我希望asdf:asdf。“
如果我理解正确,您的目标是找到介于
7202=
和;
之间的数据。在这种情况下:正则表达式是
7202=([^;]*);
。这符合:文本字符串
7202=
在第一个分号之后但不包括第一个分号的任何字符:
([^;]*)
。因为这在括号中,所以它被捕获为组1。文字字符
;
第二版问题的答案
“我想要的是整个消息,直到10=000;值7202,即asdf:asdf。“
正则表达式是
.*7202=([^;]*);.*10=000;
。这符合:任何在
7202=
之前或包括.*7202=
在第一个分号之后但不包括第一个分号的任何字符:
([^;]*)
。因为这在括号中,所以它被捕获为组1。以
;
开头并以10=000;
结尾的任何字符:;.*10=000;
整个匹配字符串的值可用作
r.group(0)
。组1的值可用作r.group(1)
。因此,单个匹配对象r
让我们同时获得两个字符串。你知道吗相关问题 更多 >
编程相关推荐