如何匹配正则表达式中的字母数字模式?

时间:2013-08-05 09:19:02

标签: regex regex-negation boost-regex regex-lookarounds regex-greedy

嗨,我是新手的正则表达式,我试图匹配波纹管线的模式

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”

1 个答案:

答案 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_]以防止这种情况发生。注意否定和大写字母。