【发布时间】:2021-09-28 05:04:06
【问题描述】:
考虑以下字符串wizard。我想在任何情况下以任何顺序查找它是否在另一个字符串中。
我尝试了以下
while(<>){if($_=~/(?:([wizard])(?!.*\1)){6}/i){print"0"}else{print"1"}}
对于输入
Garry Kasparov
Bobby Fischer
Vladimir Kramnik
Wayne Drimaz
Lionel Messi
La Signora
打印的是111111,但肯定是111011。
所以,我尝试了这个(对于相同的输入)
while(<>){if($_=~/(?=[wizard]{6})(?!.*(.).*\1).*/i){print"0"}else{print"1"}}
它再次打印了111111。
在输入数字 4 中,我们可以创建 WaDriaz,但只需要一个 a。无论如何,我们可以通过重新排列拼写wizard,无论如何。为什么它不起作用?
我的代码有什么问题?
【问题讨论】:
-
添加
use re 'debug'并查看输出。 -
或许
/w/ && /i/ && /z/ && /a/ && /r/ && /d/. -
问题:您认为
latte属于late,还是计数重要? -
@ikegami 计数不重要请看这个>我们可以制作
WaDriaz,但只需要一个a -
@JohnBrookfields "有没有其他方法可以用一个正则表达式来做到这一点" ---嗯,是的,看看我的回答。