perl 正则表达式:所有内容都必须存在
perl regex: All must be present
我在写wordle小助手。是否有正则表达式格式表示“仅当所有这些字母以任何顺序存在时才匹配”?字符class语法[abc]
是OR运算;我正在寻找等效的 AND。
例如,“cranberry”会匹配 /{abc}/
,但缺少 'b' 的“cranny”则不会。
我知道$word =~ /^(?=.*a)(?=.*b)(?=.*c)/
的答案,还有$_= $word; /a/ && /b/ && /c/
,但我想知道是否有更优雅的答案。
[abc]
表示字符必须是a
或b
或c
.
要匹配 a
和 b
和 c
的字符,您可以使用 (?[ ... ])
.[1]
(?[ [a] & [b] & [c] ])
当然,您不需要 AND。你要
(?: a.*b.*c
| a.*c.*b
| b.*a.*c
| b.*c.*a
| c.*a.*b
| c.*b.*a
)
所以 /a/ && /b/ && /c/
相当 一个优雅的解决方案。
- 这是一项实验性功能,但我预计它会被接受而无需更改。
如果您想要 a
和 b
以及 c
的任意顺序,您可以:
$matches = ($word =~ /a/ && $word =~ /b/ && $word =~ /c/);
我在写wordle小助手。是否有正则表达式格式表示“仅当所有这些字母以任何顺序存在时才匹配”?字符class语法[abc]
是OR运算;我正在寻找等效的 AND。
例如,“cranberry”会匹配 /{abc}/
,但缺少 'b' 的“cranny”则不会。
我知道$word =~ /^(?=.*a)(?=.*b)(?=.*c)/
的答案,还有$_= $word; /a/ && /b/ && /c/
,但我想知道是否有更优雅的答案。
[abc]
表示字符必须是a
或b
或c
.
要匹配 a
和 b
和 c
的字符,您可以使用 (?[ ... ])
.[1]
(?[ [a] & [b] & [c] ])
当然,您不需要 AND。你要
(?: a.*b.*c
| a.*c.*b
| b.*a.*c
| b.*c.*a
| c.*a.*b
| c.*b.*a
)
所以 /a/ && /b/ && /c/
相当 一个优雅的解决方案。
- 这是一项实验性功能,但我预计它会被接受而无需更改。
如果您想要 a
和 b
以及 c
的任意顺序,您可以:
$matches = ($word =~ /a/ && $word =~ /b/ && $word =~ /c/);