这似乎是非常基本的东西,我在这里不明白。
为什么update autos
set risico = 0
where in (select leden.lidnaam, count(deelnemers.evenementnr) as AantalDeelnames
from leden
full join autos on leden.lidnr = autos.lidnr
full join deelnemers on autos.autonr = deelnemers.autonr
group by leden.lidnaam
having AantalDeelnames = 0)
与docker-compose run web python3 manage.py populatedb --createsuperuser
不匹配?
"babc"
答案 0 :(得分:8)
因为*
量词使前一个原子匹配零或多次。
「」
是任何字符串中/ a * /
的第一个匹配项。例如:
say "xabc" ~~ / a * . /; # OUTPUT: 「x」
是相同的:
say "xabc" ~~ / (a+)? . /;
如果您将模式设置得更精确,则会得到另一个结果:
say "xabc" ~~ / x a * /; # OUTPUT: 「xa」
say "xabc" ~~ / a * b /; # OUTPUT: 「ab」
答案 1 :(得分:7)
这里的答案是正确的,我将尝试以更连贯的形式展示它们:
regex引擎始终从字符串的左侧开始,并且比最长时间的匹配更喜欢最左侧的匹配
*
匹配空字符串正则表达式a*
匹配项可以匹配字符串''
,'a'
,'aa'
等。
它总是会选择找到的最长匹配项,但是找不到比空字符串更长的匹配项,它只会匹配空字符串。
在'abc' ~~ /a*/
中,正则表达式引擎从位置0开始,a*
匹配尽可能多的a,从而匹配第一个字符。
在'babc' ~~ /a*/
中,正则表达式引擎从位置0开始,a*
只能匹配零个字符。这样做成功。由于整体比赛成功,因此没有理由在位置1再次尝试。