Я не думаю, что вы можете сделать это правильно. Хотя мне интересно, почему вы должны сделать это за один раз?
Я могу думать о действительно плохом способе сделать это, но даже если я не рекомендую это, здесь идет:
Вы могли бы сделать это с помощью регулярного выражения ниже. Тем не менее, вам придется увеличить количество захватов и выходов с _ на конце до потенциального числа пробелов в rel. Могу поспорить, что это требование, которое запрещает это решение.
Поиск:
{\<a *href\=\"[^\"]*" *rel\=\"}{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*{([^ ]*|[^\"]*)}( |\")*
Заменить:
\1\2_\3_\4_\5_\6_\7_\8_
У этого способа есть два недостатка: во-первых, могут быть ограничения на количество снимков, которые вы можете иметь в Textmate, и два - это то, что у вас будет большое количество _ в конце каждой строки.
В текущем тесте с приведенным выше регулярным выражением вы получите:
<a href="#" rel="this_is_a_test">____
PS: это регулярное выражение имеет формат окна поиска / замены визуальной студии. Возможно, вам придется изменить некоторые символы, чтобы он соответствовал текстовой панели.
{} => capturing group
() => grouping
[^A] => anything but A
( |\")* => space or "
\1 => is the first capture