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

正则表达式 – 找到anagrams和sub-anagrams

发布时间:2020-12-14 06:01:34 所属栏目:百科 来源:网络整理
导读:我有一个字符池,我希望使用正则表达式匹配所有字符的字符,这些字符是那些字符的字符或这些字符的子集. 示例:给定字符串“ACNE”,正则表达式应该给我这些结果: ACNE [T] CENA [T] CAN [T] CAAN [F] CANEN [F] 我尝试过这个解决方案/ b [痤疮] {1,4} / b但它
我有一个字符池,我希望使用正则表达式匹配所有字符的字符,这些字符是那些字符的字符或这些字符的子集.

示例:给定字符串“ACNE”,正则表达式应该给我这些结果:

> ACNE [T]
> CENA [T]
> CAN [T]
> CAAN [F]
> CANEN [F]

我尝试过这个解决方案/ b [痤疮] {1,4} / b但它接受多次重复的单个字符.
我最多只能一次拿走每个字符?

解决方法

“痤疮”这个词的子字谜就是那个词

>仅由字母痤疮组成
>不要超过一次
>不要多次包含c
>不要多于n次
>不要超过一次

将其编译为正则表达式:

^(?!.*a.*a)(?!.*c.*c)(?!.*n.*n)(?!.*e.*e)[acne]*$

测试:regexpal

或者,由于“痤疮”不包含任何超过一次的字母,“痤疮”一词的子字谜就是

>仅由字母痤疮组成
>不要包含任何超过一次的任何字母.

将其编译为正则表达式:

^(?!.*(.).*1)[acne]*$

测试:regexpal

注意:“magmoid”一词的子字谜可以匹配为

^(?!.*([agoid]).*1)(?!(.*m){3})[magoid]*$

(不要超过一次agoid,并且不要超过两次m)

(编辑:李大同)

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

    推荐文章
      热点阅读