所以基本上我有这个巨大的正则表达式模式,它中间的某个地方是表达式(?:\s(\d\d\d)|(\d\d\d\d))
。在解析的这一部分,我想捕获空格后面的 3 位数字或 4 位数字,但我不希望通过在整个事物周围使用括号来捕获(不会?:
使某些东西无法捕获) )。我必须使用括号,以便“或”逻辑起作用(我认为)。
因此,潜在的示例输入将类似于...
- input1= Giantexpression 后面还有 123 个字符
- 输入2=巨人表达式1234blahblahblah
我试过(?:\s(\d\d\d)|(\d\d\d\d))
了,至少在我有 4 位数字的情况下,它提供了额外的捕获。那么我这样做是对的还是我在某个地方搞砸了?
编辑:
更详细地说……这是我正在使用的当前正则表达式。
pattern = @".?(\d{1,2})\s*(\w{2}).?.?.?(?:\s(\d\d\d)|(\d\d\d\d)).*"
一开始我需要做一些解析。我认为肖恩约翰逊的答案仍然有效,因为我不需要使用“或”。但是有没有办法使用“或”来做到这一点?我认为最终我会需要这种能力。