我尝试匹配以下文字中的字符串Please Trade this for me!
:
8=FIX.4.2 9=0302 35=D 49=THING_PLACE 56=NOUN_NOUN 34=6004 52=20151110-18:56:56 115=REDACTED::::::::::CENSORED 1=TestAccount 18320=19731199105 207=N 38=10000 40=2 11=Order5931 109=NORTH 47=A 44=117 15=USD 48=DIS.N 21=1 55=DIS 54=1 18315=EXT 59=0 58=Please Trade this for me! 14010=NORTH_AMERICA 60=20151110-18:56:55.214 10=250
我尝试使用此正则表达式但未成功:/[a-zA-Z0-9\=.\s\:\-\_\/!]*(\s58=[a-zA-Z0-9\=.\:\-\_\/!]*\s)[a-zA-Z0-9\=.\s\:\-\_\/!]*/
你可以看到它here。正如您所看到的那样,它最终选择的远远超过了所需的文本。此外,如果您选择不同的数值代替58,它也会这样做。
请记住,最后可能没有标点符号
答案 0 :(得分:3)
尝试this(我假设您正在使用支持零长度前瞻和后视的正则表达式变体):
(?<=58\=).*?(?=\s*\d+\=)
<强>解释强>
(?<=58\=)
这是零宽度正向后视,与58=
.*?
这与任何角色的匹配程度最低。
(?=\s*\d+\=)
这是零宽度正向前瞻,与14010=
开头的边界相匹配。内部表达式匹配零个或多个空格(\s*
)后跟一个或多个数字(\d+
)和等号(\=
)
答案 1 :(得分:0)