Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.196.27] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток!
Вопрос по регулярным выражениям. Как можно получить не максимальную возможную подпоследовательность,подходящую под маску,а минимальную? Например: из строки "AbbbcccAAbbbcccA" с помощью вот такого регулярного выражения Regex^ reg = gcnew Regex("A.*A"); мы получим всю строку,а хотелось бы получить "AbbbcccA" и отдельно "AbbbcccA". |
Сообщ.
#2
,
|
|
|
читай про жадные и не жадные regexp-ы
|
Сообщ.
#3
,
|
|
|
.*?
Но все равно лучше Цитата XandoX @ читай про жадные и не жадные regexp-ы |
Сообщ.
#4
,
|
|
|
Вообще-то, в данном примере самая короткая подстрока - AA :)
|
Сообщ.
#5
,
|
|
|
Но возьмет то все равно все три
На крайняк можно .+? |
Сообщ.
#6
,
|
|
|
A.+?A Цитата fatalist @ Но возьмет то все равно все три почему три? |
Сообщ.
#7
,
|
|
|
потому что .* означает, что символ также может отсутствовать...
|
Сообщ.
#8
,
|
|
|
отсутствовать то он может, только в строке после первого сопоставления AbbbcccA останется AbbbcccA.
Добавлено найти три, включая пустую строку, можно только если хвост просматривать вперед, не включая в сопоставление A(.*?)(?=A) |
Сообщ.
#9
,
|
|
|
Цитата liss @ Странно... мне казалось идет сравнение вне зависимости от уже найденного... ну да ладно... отсутствовать то он может, только в строке после первого сопоставления AbbbcccA останется AbbbcccA. |