英文:
Regex replacing specific value within FIX message
问题
I'll provide the translated content:
对于我想要在Notepad++中使用正则表达式替换特定值的固定消息,给定以下示例(其中|是SOH字符):
> 8=FIXT1.1|9=709|35=y|34=53|49=DUMMYBROKER|56=<client_ID>|52=20210211- 12:12:37.358847|55=AUD/CAD|55=AUD/CHF|55=AUD/JPY|55=AUD/NZD|55=AUD/USD|55= CAD/CHF|55=CAD/JPY|55=CHF/JPY|55=EUR/AUD|55=EUR/CAD|55=EUR/CHF
我提出了以下正则表达式:
> [^\x{01}]\49=[^\x{01}]
以获取:
> 49=DUMMYBROKER
即获取SOH字符之间以49=开头的值
(选择的结果是否包括或排除SOH是可选的,与是否仅选择值或包括49=也一样)
对于我上面的特定示例,我的正则表达式似乎有效,但我对正则表达式不太熟悉,不确定边缘情况(例如,如果消息中有类似值的标签或其他情况),或者是否这是最清晰的方法。
可以有人帮助审查吗?
英文:
For any fixed message I wanted to use regex in notepad++ to replace particular values.
Given an example like below (where the | is the SOH character)
> 8=FIXT1.1|9=709|35=y|34=53|49=DUMMYBROKER|56=<client_ID>|52=20210211- 12:12:37.358847|55=AUD/CAD|55=AUD/CHF|55=AUD/JPY|55=AUD/NZD|55=AUD/USD|55= CAD/CHF|55=CAD/JPY|55=CHF/JPY|55=EUR/AUD|55=EUR/CAD|55=EUR/CHF
i came up with the regex
> [^\x{01}]\49=[^\x{01}]
In order to get
> 49=DUMMYBROKER
I.e get a value inbetween the SOH character, and starts with 49=
(Whether the selected result includes or excluded the SOH is optional, same with whether it just selects the value or with the 49= too)
For my particular example above my regex seems to work, however I'm not too experienced in regex and unsure about edge cases (such as if the message has similar values within another tag or something) or whether it is the cleanest
Could someone help to review ?
答案1
得分: 1
- Ctrl+F
- 查找内容:
(?<=\x{01})49=[^\x{01}]+
- 勾选 循环
- 选择 正则表达式
- 查找下一个
英文:
- <kbd>Ctrl</kbd>+<kbd>F</kbd>
- Find what:
(?<=\x{01})49=[^\x{01}]+
- TICK Wrap around
- SELECT Regular expression
- <kbd>Find Next</kbd>
Explanation:
(?<=\x{01}) # positive lookbehind, make sure we have SOH before
49= # literally
[^\x{01}]+ # 1 or more any character that is not SOH
Screenshot:
答案2
得分: 0
\b49=[^|]+
这应该只匹配以确切的 49
开头,后跟 =
和一些右侧值的部分。
英文:
You may simply use:
\b49=[^|]+
This should match only the portion starting with exactly 49
, followed by =
and some right hand side value.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论