2012-03-27 8 views
-3

私は、以下の文字列どのように表現の先頭にスペースを一致させるpython?

「サンプル」

は、しかし、いくつかの出現箇所で最初に1つ以上のスペースがある可能性があります:

「サンプル」または「サンプル」

使用せずにトリム、もしあれば、正規表現を使って一致させることはできますか?私は現在の文字列に(\ 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は「最初に1つ以上のスペースがあるかもしれない」と言っていますが、*は*なので、「*」はありません。しかし、あなたは正しいです、私は '^'を追加しました。 – alan

+0

質問は明らかではありません。私は彼が*最初にスペースがあるかどうかを知りたいと思っていたと思っていました。この場合、正規表現は役に立たないでしょうが、OPが望んでいることは明らかではありません。 're.match'を使うと、途中で'^'は必要ありません。 –

0

使用)は(見つける:あなたは、もはやスペースを見つけるまで

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

その後、posをインクリメントすることはできません。

1
" Sample".lstrip() 

lstripがprefereableであることの理由は、(隠された、任意の数があるということですまたは印刷不可能な文字)。すべてのpurmutationsをキャプチャするための正規表現を取得するには少し厄介な表示賢明です。明確なコードが最良のコードです。

正規表現内にPOSIX文字クラスを使用するオプションがありますが、reモジュールは現時点ではサポートしていません。 POSIXクラス(regex 0.1.20120323)をサポートする別のモジュールを使用する必要があります。

(注意:新しく登録されたので、私できなかった 'ポスト2つの以上のハイパーリンク'。)

参考文献: 「文字の場合

  • docs.python.org/library/string.html省略されるか空白文字は削除されません。 "

  • stackoverflow.com/questions/9897375/how-to-match-a-space-at-the-beginning-of-the-expression-python "POSIX文字クラス... [:スペース:] \空白文字 "

  • pypi.python.org/pypi/regex " POSIX文字クラスがサポートされています。これは、実際には、\ \の代替形式として扱われます。\ s \ s [\ t \ r \ n \ v \ p {...}。 "

  • http://pypi.python.org/pypi/regex "代替の正規表現モジュール、reを置き換える"

関連する問題