Использование negative lookahead:
/ABC(?!123)/
Вы можете проверить, есть ли совпадения в строке str
с:
Regex.IsMatch(str, "ABC(?!123)")
Полный пример:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string[] strings = {
"ABC123",
"ABC245",
"ABC435",
"ABC Oh say can You see"
};
string pattern = "ABC(?!123)";
foreach (string str in strings)
{
Console.WriteLine(
"\"{0}\" {1} match.",
str, Regex.IsMatch(str, pattern) ? "does" : "does not"
);
}
}
}
Live Demo
Увы, мое Regex выше будет соответствовать ABC
, если за ним не последует 123
. Если вам необходимо сопоставить хотя бы символ после ABC
, который не является 123
(то есть не совпадают с ABC
самостоятельно или по окончании строки), вы можете использовать ABC(?!123).
, точка гарантирует, что вы согласитесь, по крайней мере, один символ после ABC
: demo.
Я считаю, что первое Regex - это то, что вы ищете (до тех пор, пока «ничего» нельзя считать «чем угодно» :P
).
Что касается вашего вопроса в регулярном выражении, отрицательный lookahead '/ ABC (?! 123) /' http://www.regular-expressions.info/lookaround.html –
Всегда ли ваша строка начинается с «ABC»? – Habib
@ Хабиб: Нет. Его можно было бы разместить где-нибудь. – Morten