Регулярное выражение для конкретных требованийC#

Место общения программистов C#
Ответить
Anonymous
 Регулярное выражение для конкретных требований

Сообщение Anonymous »

Ниже приведена моя коллекция строк, которая относится к пути от начала до конца, каждый элемент, такой как ABC < /code>, является городским терминалом: < /p>

Код: Выделить всё

"ABC-DEF-MNO-JKL-LOO"
"BYT-JKU-PLO-MNO"
"DEF-BYT-IOT-POC-LOO"
"LMN-RTX-PQS-JYY"
"LMN-PQS-IRJ"
< /code>

Я разработал следующие шаблоны Regex, чтобы позаботиться о требованиях к бизнесу: < /p>

Требование1 - Начните с ABC или DEF, пройти через MNO или BYT, заканчивайте LOO, JYY, IRJ < /cod> < /p>

Pattern 1 - `@"(^ABC|^DEF).*(MNO|BYT).*(LOO$|JYY$|IRJ$)";`
Result 1 - "ABC-DEF-MNO-JKL-LOO", "DEF-BYT-IOT-POC-LOO"
< /code>

Требование2 - Начните с ABC или DEF, пройти через MNO или BYT, исключить маршрут с IOT и заканчивать с LOO, JYY, IRJ < /code> < /p>

 Expected Result - "ABC-DEF-MNO-JKL-LOO", since the other route has IOT

Expected Pattern - `@"(^ABC|^DEF).*(MNO|BYT).*^(IOT).*(LOO$|JYY$|IRJ$)";`
< /code>

Но этот не может дать какой -либо результат < /p>

Successful Pattern - `@"(^ABC|^DEF).*(MNO|BYT.*^(IOT)).*(LOO$|JYY$|IRJ$)";`
< /code>

Однако я не убежден, это правильный способ его достижения, может ли кто -нибудь помочь в понимании: < /p>


 Почему ожидаемый шаблон не помогает приносить правильный результат, я не могу понять, что не так < /li>
 Предложить лучшее обычное выражение. />   edit 1: < /strong> < /p>

на основе ответа, предоставленного @sebastian, следующая шаблона также достигает успеха: < /p>

@"^(?:ABC|DEF).*(?:MNO|BYT)(?!.*IOT).*(?:LOO|JYY|IRJ)$"< /code> < /p>

Но следующий шаблон не удастся, когда есть только дополнительное.*< /code> < /p>

@"^(?:ABC|DEF).*(?:MNO|BYT).*(?!.*IOT).*(?:LOO|JYY|IRJ)$"


Подробнее здесь: https://stackoverflow.com/questions/406 ... quirements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»