2010-10-22 3 views
0

Я хочу установить RegularExpressions для проверки строки1.Справка в Set RegularExpressions в Delphi XE

строка1 может измениться на:

  • string1: = 'D1413578; 1038'
  • string1: = 'D2; 11'
  • string1: = 'D16; 01'
  • ,. ...

в строке1 только символ «D» и точка с запятой всегда существует.

i set RegularExpressions1: = '\ b (D # \; #) \ b';

, но RegularExpressions1 не может правильно проверить строку1.

в vb6 это RegularExpressions1 = "D #; #". но я не знаю, что есть в Delphi ??

+0

вы можете протестировать RegEx онлайн, например http://www.myregextester.com - отличная помощь при написании этих выражений! –

ответ

3

Попробуйте

\bD\d*;\d* 

\d* означает "ноль или более цифр".

Кстати, я опустил второй \b, потому что иначе совпадение не получится, если после точки с запятой не будет номера (и вы сказали, что номер был необязательным).

Если под «проверить» вы имеете в виду «проверки» целая строка, а затем использовать

^D\d*;\d*$ 

Все это предполагает, что только цифры разрешены после D и ;. Если это не так, пожалуйста, отредактируйте свой вопрос, чтобы уточнить.

+0

+1 для ЛУЧШЕГО значка авитара КОГДА-ЛИБО. Очень классная идея. –

+0

@ Крис, Тим: Какую информацию он содержит? Это ASCII? –

+0

@Andreas - это URL-адрес его веб-сайта, тот же, что указан в его профиле.Мини-показанный здесь не будет сканировать на моем дроиде, но более крупный на его сканировании профиля и мой дроид предлагает забрать меня на его сайт. Очень круто. –

0

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

\AD\d+;\d+\z 

Я предпочитаю использовать \A и \z вместо ^ и $, чтобы соответствовать начало и конец строки, потому что они всегда делают только что.

В Delphi XE вы можете проверить, соответствует ли это регулярное выражение string1 в одной строке кода:

if TRegEx.IsMatch(string1, '\AD\d+;\d+\z') then ... 

Если вы хотите использовать много строк, intantiate в TRegEx:

уаг RE: TRegEx ;

RegEx.Create ('\ AD \ d +; \ d + \ z'); для строки1 в ListOfStrings do , если RE.IsMatch (string1), затем ...