2012-03-27 3 views
-3

У меня есть следующая строкаКак совместить пробел в начале выражения python?

«Образец»

однако в некоторых вхождений может быть один или несколько пробелов в начале:

«Примеры» или «Примеры»

Без использования что я могу использовать для регулярного выражения, если оно есть? Я использую (\ s +) для текущей строки. Я хочу, чтобы пространство было включено как часть одной и той же группы.

+5

Почему бы вам не просто использовать обрезку? Это произойдет как персональная атака, но я хочу сказать, что я не имею в виду это. Это стало довольно распространенным образцом для людей, которые публикуют очень простые вопросы, но со смешными ограничениями. На мой взгляд, если вы скажете, не используя обрезку, вы должны указать * очень * вескую причину не использовать обрезку. – Corbin

+0

Почему бы не использовать 'strip'?В любом случае '\ s *' соответствует пробелу в Regex –

+0

Не личная атака, я знаю, что вы можете обрезать, но было бы удобно, если бы мне не пришлось обрезать. – Rolando

ответ

1

Вам не нужны регулярные выражения:

s = " Sample" 
if s[0] == ' ': 
    # do something 
else: 
    # do something else 

Но если вы хотите регулярное выражения:

import re 
s = ' Sample' 
if re.match(r"\s+.+", s): 
    # found space at beginning, do something 
+0

Регулярное выражение должно быть чем-то вроде '\ s +' или '^ \ s'. –

+0

OP сказал: «Может быть одно или несколько пробелов в начале», а не там * будет *, следовательно, «*». Но вы правы, я добавил «^». – alan

+0

Правильно, вопрос непонятен. Я думал, что он хочет знать, было ли вначале пробелы, и в этом случае это регулярное выражение не помогло бы, но неясно, что именно этого хочет OP. Если вы используете 're.match', вам не нужен'^', кстати. –

0

Использование находки():

s = " Sample" 
pos = 0 
if s.find(' ') == pos: 
    print 'Space found!' 

Вы можете увеличивать pos, пока вы больше не найти место.

1
" Sample".lstrip() 

Причина, по которой lstrip является prefereable, что есть любое количество скрытых (или непечатаемые) символы. Чтобы получить регулярные выражения для захвата всех пурмутаций, это немного грязный дисплей. Очистить код - лучший код.

Существует опция использования классов символов POSIX в вашем регулярном выражении, однако модуль re, похоже, не поддерживает их в это время. Вам придется использовать другой модуль, который поддерживает классы POSIX (regex 0.1.20120323).

(Примечание: Новые зарегистрированные, так что я не мог "пост более 2 гиперссылок.)

Ссылки:

  • docs.python.org/library/string.html «Если гольцов опускается или None, пробельные символы удаляются ».

  • stackoverflow.com/questions/9897375/how-to-match-a-space-at-the-beginning-of-the-expression-python «классы POSIX характер ... [: пространство:] \ s \ s [\ т \ г \ п \ v \ F] Пробельные символы "

  • pypi.python.org/pypi/regex " классы POSIX символов поддерживаются. на самом деле это рассматривается как альтернативная форма \ п{...}."

  • http://pypi.python.org/pypi/regex «Альтернативный модуль регулярных выражений, чтобы заменить повторно».

Смежные вопросы