【问题标题】:PCRE to find all possible matching valuesPCRE 查找所有可能的匹配值
【发布时间】:2010-06-27 04:11:10
【问题描述】:

我在 PHP 中使用 PCRE,我需要找到一种方法来生成一个包含所有可能匹配值的数组。有什么想法吗?

例如,如果我有 R[2-9]{1} 我想要:

R2
R3
R4
R5
R6
R7
R8
R9

【问题讨论】:

  • 没有简单的方法可以做到这一点。你能告诉我们更多关于你问这个问题的原因吗?你想完成什么?
  • 我已经有许多使用 PCRE 进行验证的字段,其中一些足够短,我想在
  • 如果它们像您提供的那样简单,那么编写逐个创建菜单的代码会比解析每个正则表达式并创建所有可用匹配项更快(这对于非平凡的正则表达式可能很困难)。
  • 虽然即使是一个简单的正则表达式(例如 \d{1,9})也可以为您的下拉菜单提供大量选择...比您想要创建的更多
  • 是的,但在我所有的正则表达式的情况下,可能的总数总是小于 50。这就是为什么我想要这样做。昨晚我搜索了相当多的方法来做到这一点,但没有找到。

标签: php regex pcre


【解决方案1】:

PCRE 无法根据正则表达式生成示例字符串。我不知道有这样的 PHP 库。可以做到这一点的库通常只支持有限的正则表达式风格,并且需要对像 R[2-9]* 这样可以匹配无限数量的字符串的正则表达式进行人为限制。

如果您只需要对R[2-9] 等非常简单的正则表达式执行此操作,那么也不难:

  • 在您自己的代码中解析正则表达式以生成示例值,或使用其他机制。
  • 或者使用您自己的机制来指定“R 后跟 2 到 9 之间的数字”,然后您的代码可以从中生成正则表达式和示例值列表。
  • 或者,如果您的源代码中硬编码正则表达式,只需手动输入值列表。

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多