#regex #comments
#регулярное выражение #Комментарии
Вопрос:
Я ищу регулярное выражение, которое (не) соответствовало бы символу комментария, заключенному в произвольные пробелы
Например, с ‘#’ в качестве символа комментария:
строки должны совпадать:
code line here
code line here
предполагается, что строки не совпадают:
#code line here
# code line here
# code line here
Итак, что-то вроде отрицания набора (ноль / * пробелы # ноль / * пробелы)
^(s#s)
Комментарии:
1. В чем проблема с вашим собственным регулярным выражением?
2. два пробела не «объединены» в один диапазон пробелов, поэтому регулярное выражение не соответствует ни одной раскомментированной строке
Ответ №1:
Следующее регулярное выражение будет соответствовать строкам, в которых нет символа «#»
^((?!^s #).)*$
Комментарии:
1. Это регулярное выражение не фиксирует строки кода, заканчивающиеся комментарием.
2. @AlexL, это не является обязательным требованием в вопросе, но я это исправил.
Ответ №2:
Может быть что-то не оптимизировано, но попробуйте это:
^[^#]*(?!s*#).
При этом будут получены все символы с начала строки, за которыми не следует spaces #
комбинация.
Комментарии:
1. Рад быть полезным!
Ответ №3:
Для ваших данных примера, если поддерживается предварительный просмотр, вы могли бы использовать отрицательный предварительный просмотр, чтобы утверждать, что с начала строки то, что справа, не является символом, умноженным на 0 пробелов, за которым следует #
.
Если это так, то сопоставьте всю строку.
^(?!s*#). $
Это будет соответствовать:
^
Начало строки(?!
Негативный прогнозs*#
Сопоставьте 0 раз символ пробела, затем#
)
Завершите просмотр.
Сопоставьте любой символ, кроме новой строки, 1 раз$
Конец строки