我在写一个世界助理。是否存在一个正则表达式格式,只有当所有这些字母以任何顺序出现时才说"匹配"?字符类语法[abc]
是一个OR操作;我在找等价的AND
例如"蔓越莓";将匹配/{abc}/
,但缺少'b'的"cranny"将不匹配。
我知道$word =~ /^(?=.*a)(?=.*b)(?=.*c)/
的答案,也知道$_= $word; /a/ && /b/ && /c/
的答案,但我想知道是否有更优雅的答案。
[abc]
表示字符必须是a
或b
或c
。
a
、b
和c
,您可以使用(?[ ... ])
.
(?[ [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/);