Мой регулярное выражение до сих пор:Regex исключить из второй группы захвата, если соответствует определенным критериям
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+)(_\d+)?$
Когда я проверяю строку:
UCX_1maxi_holiday2_blah_343
Это правильно тестирует верно, однако мой последний захват группы будет никогда не будет достигнуто, потому что оно соответствует второй группе. т. Е. Если последний раздел демаркированного подчеркивания - это все числа, я хочу, чтобы этот раздел в третьей группе захвата не был вторым. Иначе я хочу это во второй группе.
Я думал о взглядах и -бегах, и я не думаю, что они будут работать для этого, но я мог бы быть удивлен.
Я мог бы сделать отдельный тест, чтобы проверить конец строки в одиночку, а затем разделить строки, как мне нужно, но интеллектуальное любопытство.
мне интересно, если есть способ, чтобы изменить вторую группу захвата, чтобы остановить его от затирания конца, если это весь номер
Любых получил несколько Regex JiuJitsu для этого?
Это работает. Мое первоначальное понимание неподдельности требует некоторого образования. Таким образом, не жадный будет передавать на еду, если он знает, что следующий образец возьмет его? – jollarvia
Как правило, да. Жадные выражения обычно бывают быстрее, так как не-жадные совпадения должны смотреть вперед или назад (чтобы «знать», что нужно оставить для следующей части шаблона); во многих случаях разница в скорости никогда не имеет значения. – cco