嗨,我是新手的正则表达式,我试图匹配波纹管线的模式
T071108452T 42D896D5O 3587
我希望匹配模式直到T071108452T 42D896D5,之后我希望字符“O”匹配我试过这样的事情
(T)(\d{9})(T)(\d{0,19}\s{0,19}\w{0,19})O
但它包含已经与\ w {0,19}的“O”,我希望将“O”作为特定字符匹配,任何帮助都将非常感谢。
至于值越多
T065000090T203 93 5797 9O 4037
T325170628T0108626004D18O01054
T071108452T 42D896D5O 3587
所以我想匹配“T” - 然后是9位数字 - “T”然后是任何字母数字组合,直到 - “O”
答案 0 :(得分:0)
假设您有以下字符串:
T071108452T 42D896D5O 3587O
Note that I added an extra O --^
如果您希望匹配到最后O
,则可以使用以下pattern:[\w\s]+(?=O)
这意味着:
[\w\s]+
匹配单词和空格一次或多次,贪心。(?=O)
Zerowidth lookahead断言匹配,直到找到O
现在,如果您想在第一次出现O
之前进行匹配,那么您可以使用以下pattern:[\w\s]+?(?=O)
。请注意添加的问号,它与ungreedy匹配。
注意: \w
也会匹配下划线,您可以将[\w\s]
替换为[^\W\S_]
以防止这种情况发生。注意否定和大写字母。