Yalnızca normal ifadeyle tamamen eşleşen dizelere izin vermemek istediğinizi varsayarsak (yani, mmbla
tamam, ancak mm
değil), istediğiniz şey budur:
^(?!(?:m{2}|t)$).*$
(?!(?:m{2}|t)$)
olumsuz bir bakış açısıdır ; "geçerli konumdan başlayarak, sonraki birkaç karakter veya değildir , ardından dizenin sonu gelir" diyor. Baştaki başlangıç ankrajı ( ), önden ilerlemenin dizenin başlangıcına uygulanmasını sağlar. Bu başarılı olursa, devam eder ve dizeyi tüketir.mm
t
^
.*
Bilginize, Java'nın matches()
yöntemini kullanıyorsanız , gerçekten ^
ve sonuna ihtiyacınız $
yoktur, ancak herhangi bir zarar vermezler. Yine de $
, önden bakış gereklidir.
{1}
tamamen işe yaramaz. (Bir değer sağladığını düşünüyorsanız, neden yazmıyorsunuz((m{1}a{1}){1}|(t){1}){1}
?)