Помощь в наборе RegularExpressions в Delphi XE - PullRequest
0 голосов
/ 22 октября 2010

Я хочу установить регулярные выражения для проверки строки 1.

string1 может измениться на:

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

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

я установил RegularExpressions1: = '\ b (D # \; #) \ b';

но RegularExpressions1 не может правильно проверить string1.

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

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Попробуйте

\bD\d*;\d*

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

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

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

^D\d*;\d*$

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

0 голосов
/ 26 октября 2010

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

\AD\d+;\d+\z

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

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

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

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

вар RE: TRegEx;

RegEx.Create ( '\ AD \ D +; \ D + \ г'); для string1 в ListOfStrings сделать если RE.IsMatch (string1), то ...

...