Подтвердить что ты не робот

Строки соответствия регулярного выражения, начинающиеся с определенного символа ИЛИ пробела, а затем этого символа

Я пытаюсь написать регулярное выражение, которое соответствует строкам, начинающимся с дефиса (-) ИЛИ, который начинается с пробелов или вкладок, а затем имеет дефис. Поэтому он должен соответствовать следующему:

- hello!
            - hello!

Вот что у меня до сих пор: ^(\-). Но это не соответствует второму примеру выше, потому что для первого символа требуется дефис.

4b9b3361

Ответ 1

Вы можете попробовать

^\s*-
  • ^: начало строки
  • \s*: нулевые или более пробельные символы
  • -: литерал - (вам не нужно избегать этого вне класса символов)

Ответ 2

Вы можете использовать это регулярное выражение, сделав 0 или более пробелов опциональным совпадением в начале:

^\s*-

Ответ 3

выше (с использованием \s *) является самым простым для этого случая, но в целом вы всегда можете использовать | Синтаксис:

re.match('^-|^\s+-', '- hello')
<_sre.SRE_Match object at 0x0000000054E72030>

re.match('^-|^\s+-', '     - hello')
<_sre.SRE_Match object at 0x0000000054E72030>

re.match('^-|^\s+-', '     + hello')
None

^- имеет место для - в начале, `^\s + - 'имеет одно или несколько пробелов, а | выбирает один из них.