gpt4 book ai didi

regex - 正则表达式是否可以设计为 'reverse' 以将其每个模式输出到列表或表格中?

转载 作者:行者123 更新时间:2023-12-01 09:27:42 24 4
gpt4 key购买 nike

我有一些复杂的正则表达式模式,由 php 应用程序使用,这些模式依次利用它们进行一些复杂的逻辑输出。我想对组成部分进行一些测试,以便我可以确定失败的内容,换句话说,它是否是正则表达式,如果是,正则表达式的哪一部分因为我找到了一些工作而有些则没有

那么我可以举个例子:

  • (Bob|Robert)( & | and)(Sally|Jane)

  • 并对其进行处理以返回列表/表格,例如:
  • 鲍勃和简,鲍勃和简,鲍勃和莎莉,鲍勃和莎莉,罗伯特和简,罗伯特和简,罗伯特和莎莉,罗伯特和简

  • 因此,我可以针对正则表达式对每个输出运行测试以查看哪个返回值?很明显,在这个例子中,所有的都可以工作,但是正则表达式我有很多“管道”和分支,我只想获取整个列表并能够进行测试以确保所有这些都可以工作。

    最佳答案

    不要这样做。一方面,这几乎是不可能的。像 .+ 这样的开放式表达实际上是不可能的。或 \d+ . Bob.+Jane例如,匹配无限多个字符串。许多更微妙的例子也是如此,比如 Hello World!+甚至 \d{3,} (三位数或更多位数)。

    换句话说,除了微不足道的正则表达式之外,识别所有可能性将是极其困难或完全不可能的。例如,生成 .{16} 的所有可能性(即所有 16 个字符的字符串)将导致 3.4 * 10^38 种可能性进行检查。这就是如果您将自己限制为 ASCII 字符。如果每秒检查 1,000,000 个字符串,则需要 1.07 * 10^25 年,或者大约是宇宙估计年龄的 13,820,512,820 倍。另外,祝你好运找到一个硬盘驱动器来保存这么多数据。您需要将一大块地球转换为二进制存储。

    更好的解决方案是生成一堆您可能实际遇到的真实字符串,然后使用它们创建单元测试。随着您的前进,您可能会发现其他应该有效但无效的案例。因此,编写一个新测试,然后修改正则表达式,直到所有测试(旧的和新的)都通过。

    关于regex - 正则表达式是否可以设计为 'reverse' 以将其每个模式输出到列表或表格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131927/

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