2012-06-08 36 views

答えて

24

あなたが正規表現に対して文字列をテストしたい場合は、reライブラリを使用

import re 
valid = re.match('^[\w-]+$', str) is not None 
5

Pythonは同様に正規表現があります。

import re 
if re.match('^[\w-]+$', s): 
    ... 

それとも、許可のリストを作成できますが文字:

from string import ascii_letters 
if all(c in ascii_letters+'-' for c in s): 
    ... 
+0

re.match( '^ [\ w - ] + $'、s)は、対応するMatchObjectインスタンスを返します。文字列がパターンと一致しない場合はNoneを返します。 Noneと比較されるべきである。 – Temak

+1

@Enorなぜですか?どんなマッチオブジェクトも真実になります。唯一可能な偽の値はNoneです。 –

1

文字列がのみ英数字とダッシュが含まれているかどうかをテストするために、私はただ純粋なのpythonを使用して任意のモジュールをインポートせず

import re 
found_s = re.findall('^[\w-]+$', s) 
valid = bool(found_s) and found_s[0] == s 
+0

oops nevermind、不要なので – richard

1

を使用することになり、ダッシュを除く数値の任意なしアルファを、削除します。

string = '#Remove-*crap?-from-this-STRING-123$%' 

filter_char = lambda char: char.isalnum() or char == '-' 
filter(filter_char, string) 

# This returns--> 'Remove-crap-from-this-STRING-123' 

あるいは1行で:ロケール指示英数字なし

''.join([c for c in string if c.isalnum() or c in ['-']]) 
+0

これは受け入れられる答えである必要があります。これを解決するために正規表現や外部パッケージは必要ありません。 – Roganartu

関連する問題