使用 AND 基于两个字符串进行正则表达式匹配
Regex Match based on two strings using AND
我想从字符串中提取命令。我需要的命令包含特定的 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
使用:
(Z(?:123|124)(?:xy|od).*?(:?;|$))
- 从 Z 开始 => (Z)
- 匹配 123 或 124 不捕获组 => (?:123|124)
- 不捕获组匹配 zy 或 od => (?:xy|od)
- 匹配除换行符之外的任何内容,直到第一个;或在没有捕获组的情况下找到字符串结尾 => (:?;|$)
我想从字符串中提取命令。我需要的命令包含特定的 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
使用:
(Z(?:123|124)(?:xy|od).*?(:?;|$))
- 从 Z 开始 => (Z)
- 匹配 123 或 124 不捕获组 => (?:123|124)
- 不捕获组匹配 zy 或 od => (?:xy|od)
- 匹配除换行符之外的任何内容,直到第一个;或在没有捕获组的情况下找到字符串结尾 => (:?;|$)