Yalnızca normal ifadeyle tamamen eşleşen dizelere izin vermemek istediğinizi varsayarsak (yani, mmblatamam, ancak mmdeğ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.mmt^.*
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}?)