gpt4 book ai didi

regex - 使用多个可能的分隔符从正则表达式中删除冗余

转载 作者:行者123 更新时间:2023-12-02 02:11:11 26 4
gpt4 key购买 nike

我有一个正则表达式,其中相同的匹配条件可以应用于多个定界符。 [] , () , 和 <>都是有效的。出于示例目的,它看起来像这样:

\[.\]|\(.\)|<.>

有没有办法从上面的正则表达式中删除冗余?分隔符内的匹配条件始终相同,但分隔符本身可能不同。

最佳答案

我猜你问是因为

[[(<].[])>]

不够准确,原因很明显。

回答“不,没有办法”总是很危险的,因为很难确定已经检查了所有可能的方法。在这种情况下,人们通常必须拿出可靠的证据来回答。

我不确定这是一个足够有力的证据,甚至根本不是一个“证据”,但考虑一下这个(伪)信息论观点:

  1. PCRE 引擎本身不知道字符对之间的任何关系,[] , () , 和 <> .因此,表达式本身必须包含该信息,需要至少六个字符 []()<>出席。

  2. 不仅如此,出于同样的原因,表达式本身必须至少 定义两个(隐含第三个)。我不确定如何证明两个交替运算符 ( |) 是你能做的最好的,但我的意思是,即使有更紧凑的方法,你也会节省最多一个字符,因为至少需要一位来表示“存在配对!”

  3. 元字符的转义只能通过 []() 来压缩。可以在不转义的情况下出现在字符类中,但首先,这并不是真正的“删除冗余”,而是“语法上的幸运情况”,其次,您仍然必须为定义添加两个字符表示字符类:[] .

  4. 因此,我相信即使从理论的角度来看,如果我关于正则表达式引擎无法知道的内容的假设是真的,那么一个人最多 em> 您已经提供的正则表达式中的三个字符:\[.\]|\(.\)|<.> .

我热切期待被正则表达式专家纠正!

关于regex - 使用多个可能的分隔符从正则表达式中删除冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com