2017-09-28 5 views
-1

正規表現を使用して文字と文字の両方を組み合わせた文字列を見つけるにはどうすればよいですか?たとえば:数字と文字で文字列を検出する

ca199220 
b2ad 
45e1 
00D61000000ZPjx 

私が探していた文字列は、常に同じ長さではなく、文字のいずれかの数字で始まり、そしてそれらに分散させた数字と文字を有することができます。明確にするために

、私は

test = 'yay over here ca19922 i have some 00D61000000ZPjx' 
re.sub(r'insert some regex', '', test) 
#return test = 'yay over here i have some' 

文字列を利用したいと思います私のソリューションでした:

import re 
import nltk 
[re.sub(r'^(?=.*\d)(?=.*[a-zA-Z])\w+', '', w) for w in nltk.word_tokenize(test) if len(re.sub(r'^(?=.*\d)(?=.*[a-zA-Z])\w+', '', w))>0] 

答えて

1

数字と文字の両方での入力のみにマッチする正規表現は次のとおりです。

^(?=.*\d)(?=.*[a-zA-Z]).+ 

これは2つのルックアヘッドを使用します。必要な文字の種類ごとに1つずつです。

ルックアヘッドを使用すると、より多くの要件を簡単に追加できます。必要に応じて追加することができます。

+0

私の代わりに '\ w'を置きます。あなたがOPから明らかではないが、連続した単語だけに一致させたい場合。 – kaza

関連する問題