2015-01-14 2 views
-1

У меня нет большого опыта работы в Reg EX, и именно поэтому я отправляю этот вопрос. Это может быть очень тривиально для большинства из вас!RegEx: Найти совпадение на основе символов в строке

Я пишу свое приложение на C# и вам нужно найти определенные шаблоны соответствия в строках.

Струны я получаю выглядит что-то похожее на это,

610WBDFGFGM0122544   // (conditions 1 to 5) 
XYZF44DT508755    // (condition 6) 
T53497FD445    // (condition 7) 

Приведенные выше строки только образцы того, что я получаю. Я получаю много разных комбинаций указанных строк с разными числами и алфавитами.

Теперь из данной строки мне нужно проверить определенные условия. Эти условия,

For given string, 
  1. ЕСЛИ первые 2 символа являются «60» и третий символ «0» или «2» и 4-й символ не «W» или «D» Тогда условие совпадения ,

  2. IF первые 2 символа «61» И третий символ «0» или «2», а четвертый символ «W» или «D».

  3. ЕСЛИ первые 2 символа являются «62» И третий символ не является «0» или «2» и 4-ый символ не является «W» или «D» Тогда условие совпадения.

  4. IF первые 2 символа не «60» или «61» или «62» и третий символ не «0» или «2» и 4-ый символом является «W» или «D» Тогда условие совпадения ,

  5. IF первые 2 символа не «60» или «61» или «62» И третий символ не является «0» или «2» и 4-ый символ не является «W» или «D», Тогда условие Матчи.

  6. IF первые 3 символа «XYZ» И строка содержит «T50» ТОГДА соответствует условиям.

  7. IF первые 2 символа «T5» И строка содержит «27» И конец строки с «5» ТОГДА соответствует условиям.

Любые предложения и ответы приветствуются!

UPDATE

Причина для использования регулярных выражений в данном случае, потому что, то можно экстернализация модели RegEx в файле вне и не содержит в исходном коде. Таким образом, когда возникает новое условие, легко добавить соответствующий RegEx во внешний файл без внесения каких-либо изменений в исходный код.

Я не смог добиться какого-либо прогресса в моем собственном RegEx.

+2

У вас есть 7 не очень тяжелые случаи, которые могут быть сделаны с нормальными строками проверки. Почему это должно быть регулярное выражение? – Mitja

+0

вы изучили 'string.Contains()' Method .. 'SubString() method' и предварительно сформировали некоторые условные проверки на основе Char или string в зависимости от подстроки .. у вас есть что-то, что вы начали или закодировали самостоятельно что вы могли бы нам показать ..? – MethodMan

+0

Поскольку план состоит в том, чтобы вытеснить каждый шаблон RegEx за пределами исходного кода, а затем динамически перейти на проверку, таким образом нет необходимости изменять исходный код при возникновении нового СОСТОЯНИЯ. – donguy76

ответ

2
  1. ЕСЛИ первые 2 символа являются «60» И третье символ «0» или «2» и 4-ый символ не является «W» или «D» Тогда условие совпадения.

    ^60[02]{1}[^WD]{1}

  2. IF первые 2 символа являются "61" И третий символ "0" или "2" и 4-й символ является "W", или "D" Тогда условие совпадения.

    ^61[02]{1}[WD]{1}

  3. IF первые 2 символа являются "62" И третий символ не является "0" или "2" и 4-ый символ не является "W" или "D" Тогда условие совпадения.

    ^62[^02]{1}[^WD]{1}

  4. IF первые 2 символа не "60" или "61" или "62" И третье символ не является "0" или "2" и 4-й символ является "W" или «D " ЭТО условие соответствует.

    ^((?!60|61|62).){2}[^02]{1}[WD]{1}

  5. IF первые 2 символа не "60" или "61" или "62" И третий символ не является "0" или "2" и 4-ый символ не является "W", или " D " ЭТО условие соответствует.

    ^((?!60|61|62).){2}[^02]{1}[^WD]{1}

  6. ЕСЛИ первые 3 символы являются "XYZ" И строка содержит "T50" Тогда условие совпадения.

    ^XYZ.*(T50).*$

  7. ЕСЛИ первые 2 символа являются "Т5" И строка содержит "27" и строка заканчивается "5" Тогда условие матчей.

    ^T5.*(27).*5$

1

Чтобы соответствовать конкретной строки/слова:

60 

Чтобы соответствовать определенным чарсы:

[WD] 

Чтобы соответствовать все, кроме определенных символов:

[^WD] 

Чтобы пропустить любую последовательность символы:

.* 

Чтобы соответствовать полукокса в конце:

5$ 

Чтобы соответствовать ничего, кроме 61 и 62:

((?!61|62).){2} 

Пример: начинается с А, то В или С, то ничего, кроме D, содержащий E, заканчивающийся на F:

A[BC][^D].*E.*F$ 

Это должно позволить вам объединить те, которые вам нужны.

Смежные вопросы