Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在一个很长的正则表达式模式中一个接一个地有几个匹配的组。在中间我有
...(?<number>(?:/(?:digit|num))?\d+|)...
它应该匹配类似/num9,/digit9或9或空白的东西(因为我需要命名组出现在结果关联数组中,即使它是空的)。
/num9
/digit9
9
/该模式有效,但是如果前两种情况之一匹配,是否可以丢弃该字符?我尝试了一个积极的前瞻,但如果你在前瞻之前有表达式,你似乎不能使用那些。
/
我正在尝试使用正则表达式来完成吗?
根据您的输入,我认为您/无论如何都需要在某个时候捕获,否则您的整个正则表达式都会失败。同时你想忽略它,所以它不能成为你命名组的一部分。因此,通过将其放在它之外并使其成为可选的,同时确保一个数字前面没有直接由 a/您提出所需的结果:
^/?(?<number>(?:(?:digit|num))?(?<!/)\d+|)$
但是,鉴于您缺乏更完整的输入和正则表达式,我不能 100% 确定这将适用于您的所有情况。