Обратите внимание: я программирую на Python (версия 3.6), но также хотел бы перенести эти регулярные выражения в SAS.
В целом, я работаю с журналом SAS и хочу исключить строки, напечатанные в журнале из операторов% include.По сути, то, что я пытаюсь выполнить, выглядело бы так:
54210 proc sort data=inds out=outds;
И строки, которые я НЕ ХОЧУ, будут выглядеть так:
33406 +%global var1 var2 var3;
Ключ в том, что11-й символ будет «+», но слева всегда будет группа чисел, за которой следует группа пробелов, длина которых в конечном итоге составит 11 пробелов - , если это не строка% include,который я хочу исключить.
То, что у меня пока есть, таково:
^[0-9]{1,11} (?! {2,10}\+)
Это сработало, чтобы получить то, что я хочу именно из журналов, которые я тестировал, но это далеко не так.Самый простой выход - использовать это выражение:
^[0-9]{1,11} {3,10}
А затем добавить дополнительное условие, которое будет игнорировать строку, если 11-й символ - «+», но могу ли я сделать это в одном регулярном выражении?Я сталкивался с lookaheads / lookbehinds, работающими над этим, но проблема в том, что первая подобранная группа может различаться по длине, которая перемещается туда, где можно было бы ожидать «+» - так есть ли способ, которым я могу сопоставить группу в наборедлина и затем отменить совпадение, если за ним следует символ?