regex
От: Аноним  
Дата: 04.09.07 11:39
Оценка:
Привет,

Есть вопрос по boost::regex. Есть ли разница между следующими выражениями и если есть, то какая: (\w+) и (\<\w+\>) ?
Если разницы нет, зачем в примерах исползуют (\<\w+\>) для матчинга слова а не просто (\w+)?

Спасибо
Re: regex
От: Кодт Россия  
Дата: 04.09.07 12:27
Оценка: 2 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Есть вопрос по boost::regex.


А равно как по всем другим perl-compatible regexp'ам.

А>Есть ли разница между следующими выражениями и если есть, то какая: (\w+) и (\<\w+\>) ?

А>Если разницы нет, зачем в примерах исползуют (\<\w+\>) для матчинга слова а не просто (\w+)?

Разница такая, что \w+ может сопоставиться с фрагментом слова не с начала, а \<\w+ — строго по началу слова.
Например, ([0-9A-F]+?)(\w+) на строке badc0debaby совпадёт с (badc0)(debaby), (badc0d)(ebaby) ... (badc0debab)(y)
А ([0-9A-F]+?)(\<\w+) — только с (badc0)(debaby)

Конец слова — в зависимости от того, делаем мы поиск жадным или ленивым. \w+\> эквивалентно жадному поиску \w+
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: regex
От: Аноним  
Дата: 05.09.07 14:43
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Например, ([0-9A-F]+?)(\w+) на строке badc0debaby совпадёт с (badc0)(debaby), (badc0d)(ebaby) ... (badc0debab)(y)


А можно поподробнее?

Насколько я понимаю ([0-9A-F]+?)(\w+) может совпасть только с (0)(debaby) на этой стороке и все. Как он может совпасть с вашими вариантами?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.