<分区>
对于这个问题,我已经回答了一个|\^,但被告知预期的答案是[a^] 后一种解决方案是否比前一种更有效?
标签 regex
<分区>
对于这个问题,我已经回答了一个|\^,但被告知预期的答案是[a^] 后一种解决方案是否比前一种更有效?
最佳答案
这两种解决方案都是有效的,并且从根本上实现了相同的目标。 [a^]
可能 更有效,具体取决于所讨论的正则表达式实现 — 在解析正则表达式时,引擎知道 []
中的任何内容必须匹配单个字符,而 |
可以处理任意长度的替代方案 — 然而,这纯粹是推测,我敢猜测大多数真实的正则表达式引擎都可以处理这种常见情况相当有效。除非你打算benchmark your code来确定哪些部分是瓶颈,它们可以被认为是等价的。
还有一些其他的小权衡;例如,[a^]
不需要在 ()
中包装,如果您将它放在某物旁边,但是 a|\^
做。 IMO,[a^]
令人困惑,因为它看起来像有人试图编写 [^a]
(除 a
之外的任何字符)但是做了一个打字错误。但是,(?:a|\^)
非常冗长。权衡这些权衡是一种风格/主观问题。
关于regex - 如何匹配 'a' 或 '^',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60163530/