Ne grepWin'in desteklediğini bilmiyorum, ama bir şeyleri iki kez eşleştirmek için geldiğim şey.
/^((?!how).)*how((?!how).)*how((?!how).)*$/
Açıklama:
/^ # start of subject
((?!how).)* # any text that does not contain "how"
how # the word "how"
((?!how).)* # any text that does not contain "how"
how # the word "how"
((?!how).)* # any text that does not contain "how"
$/ # end of subject
Bu iki "nasıl" s adlı sağlar, ancak "nasıl" s arasında metinleri ve ya bunların yan "nasıl" içermezler için.
Elbette, ifadede "nasıl" için herhangi bir dizeyi değiştirebilirsiniz. iki kez yalnızca arama ifadesini yazarak "basitleştirmek" istiyorsanız
, böylece geribaşvuruları kullanabilirsiniz:
/^(?:(?!how).)*(how)(?:(?!\1).)*\1(?:(?!\1).)*$/
Refiddle with this expression
Açıklama: Ben ?:
eklendi
yapmak negatif lookaheads metni yakalama. Ardından, yakalama alt katmanını (ilk ve tek olanı) yapmak için normal how
'un etrafına parantezler ekledim.
o ve (herhangi bir içermezolur yakalama "nasıl" anlamında) bir negatif ileri yönlü olduğu için ilk lookahead içinde "nasıl" yeniden dahil etmek zorunda yakalanan o noktada henüz yakalanan değildir "nasıl".
Arama dizgisinin bir değişken olması gerekiyorsa, bu Regex ile mümkün değildir. Bir betik dili ile birleştirmeniz gerekir. Eğer değişken olması gerekmiyorsa, bu regex şöyle yapar: 'nasılsınız. * Nasılsın? – Jeff
@Jeff JavaScript Normal ifadesinde eşleşen bir gruba başvurmak mümkündür:'/(abc) \ 1/'abcabc'yi eşleştiriyor, ancak abc değil. –
Sadece "nasıl" _exactly_ iki kez görünüyorsa eşleşmelidir mi? Ya üç veya daha fazla kez görünürse? – Wiseguy