-2

我想从字符串中提取命令。我需要的命令包含特定的 id 124 和 123 以及特定的标志 od 和 xy。contained my ids [123|124] 所以 我想提取所有这些命令my flags[od|xy]

字符串:Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;
正则表达式:Z[^;]*?(od|xy)[^;]*?;
必需输出:[Z124xy54; Z123od33; Z123od343;]
但当前输出:[Z123xy54; Z123od33; Z123od343; Z251od541;]

我知道为什么会这样,但不知道如何解决。任何人都可以帮忙

另一个样本:

Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;Z123od343;
Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;Z123od343X
4

1 回答 1

1

利用 :

(Z(?:123|124)(?:xy|od).*?(:?;|$))
  1. 从 Z => (Z) 开始
  2. 匹配 123 或 124 而不捕获组 => (?:123|124)
  3. 匹配 zy 或 od 而不捕获 group => (?:xy|od)
  4. 匹配除换行符之外的任何内容,直到 first ;或未捕获组的字符串结尾 => (:?;|$)

工作演示:https ://regex101.com/r/AugDZT/2

于 2016-11-28T07:56:31.957 回答