воскресенье, 13 декабря 2009 г.

Принцип поиска в регулярных выражениях

Данный пост должен помочь осознать принцип поиска совпадений. И ответить на вопрос почему выражение находит именно этот текст а не другой.

Первое о чём стоит сказать - это то что существует 2 больших механизма поиска совпадений:
  1. НКА - недетерминированный конечный автомат, механизм поиска основан на возвратах. Также важной особенностью является то что подвыражения в регулярном выражении проверяются независимо друг от друга. Поскольку НКА управляется регулярным выражением, автор выражения может определять ход дальнейших событий.
  2. ДКА - детерминированный конечный автомат, каждый символ в строке проверяется не более одного раза. Т.е. выражение проверяя следующие символы отбрасывает заведомо ложные совпадения и перестает их проверять.

суббота, 12 декабря 2009 г.

Как научить Delphi дружить с RegExp

Приветствую друзья!
Давненько я не писал. Пора возвращаться в колею!
Если кто то из вас пользуется Delphi, то у него наверняка возникала такая мысль: "почему же создатели этого языка не поставляют в комплект регулярные выражения?". Ну у меня точно возникает.
С тех пор как я впервые услышал о RegExp, я постоянно об этом думаю, поскольку на службе приходиться иметь дело именно с Delphi. А используя другие языки, я всё больше убеждался в мощи и удобстве регулярных выражений. И вот, на днях, меня припекло на столько, что сокрушаясь горючими слезами, я чуть было не начал писать RegExp для Delphi самостоятельно.