加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何找到给定正则表达式生成的最小,最大长度字符串?

发布时间:2020-12-13 22:53:58 所属栏目:百科 来源:网络整理
导读:如何在正则表达式下找到最小和最大长度? 例如 [1-9]?[0-9] 这个正则表达式可以生成最小1(0或1 0r 2 ….或9)和最大字符串长度2(10或11或12或…… 19或20或21 …. …….或99) 同样,任何人都可以提供一个函数,可以计算正则表达式的最小和最大长度吗? 哪个可以
如何在正则表达式下找到最小和最大长度?

例如

[1-9]?[0-9]

这个正则表达式可以生成最小1(0或1 0r 2 ….或9)和最大字符串长度2(10或11或12或…… 19或20或21 …. …….或99)

同样,任何人都可以提供一个函数,可以计算正则表达式的最小和最大长度吗?
哪个可以在正则表达式下输入?

^[a-zA-Z0-9][a-zA-Z0-9.-]{0,64}[a-zA-Z0-9]$
^[a-zA-Z0-9._-]{1,255}$
^[a-zA-Z0-9 !#$'()*+,./:;=?@^_`~-]{1,30}$
^[]a-zA-Z0-9 !#$'()*+,./:;=?@[^_`{|}~-]{0,50}$
^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9]).){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])$
正则表达式只包含一小部分元素.

>原子(例如a或[a-k]或.),
>选择(例如r1 | r2),
>重复(例如r {3,10},r,r *,r?).
>可以重复或选择的群体(例如(r)).
>特价(例如^,$).

除非我们想要添加非消费前瞻和类似内容,否则它或多或少是它,但它们不是您的示例输入的一部分,因此我不会考虑这些.

这些可以多久(最小/最大)?

> 1/1(原子大小不变)
> min(minlen(r)for r in choices)/ max(maxlen(r)for r in choices)
> minlen(r)* minrepretition / maxlen(r)* maxrepetition
> minlen(r)/ maxlen(r)
> 0(位置参数与空字符串匹配).

所以,你需要的是一个正则表达式解析器(正如Hugh Bothwell在他的回答中所说的那样),它会像给定正则表达式的抽象语法树(absy)那样返回你;然后可以使用我在上面概述的规则来分析这个绝对,以找到给定正则表达式可以匹配的字符串的最小或最大长度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读