1

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

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”

4

1 回答 1

0

假设您有以下字符串:

  T071108452T    42D896D5O 3587O
Note that I added an extra O --^

如果要匹配到最后一个O,可以使用以下模式[\w\s]+(?=O)

这表示:

  • [\w\s]+匹配单词和空格一次或多次,贪婪。
  • (?=O)Zerowidth 超前断言匹配直到O找到

现在,如果您想匹配直到第一次出现thenO您可以使用以下模式[\w\s]+?(?=O)注意添加的问号,它是为了匹配不贪婪。

注意: \w也将匹配下划线,您可以替换[\w\s][^\W\S_]以防止这种情况。注意否定和大写字母。

于 2013-08-05T09:43:12.253 回答