2016-09-20 6 views
1

この正規表現コード(下記)は、アドレス行で動作します。たとえば、111 N Main StMAINとなります。基本的には、dr,ave,laneなど、N、S、N、Eなどの数字の後の指向性の用語は省略します。Regexによって1543 Tommyを解析する方法

アドレスラインは(streetstlaneblvdのようなキーワードが含まれていません)110 Main Tableある場合は、それがnullとして値を示しています。結果はMain Tableになります。もう1つの例は110 N Main Tableです(この場合も、street,st,lanebldvdなどのキー値はありません)。私はそれが(要するに、方向性用語(Nを取り除く)とstreetstlaneblvdのようにキーワードが存在しないため)、再びMAIN TABLEとして出てくる全部(メインテーブル)私は疑問に思う

を取る必要があります私はこれらの基準

正規表現のコードに基づいて、私の正規表現を調整することができる方法:

(?<=\d\b)\s*(?:N|S|W|E|North|South|East|West|NE)\s(.?)\s(?=drive|dr|ave|avenue|lane|ln|loop|hwy|circle|cir|plaza|pl|terrace|blvd|boulevard|pkwy|drive|dr|way|road|court|Parkway|run|st|ct|terr|rd|street)? 
+0

文字列の途中で一致するはずですか? "1543"が存在する場合にのみ一致するはずですか?より具体的にする必要があります。 –

+0

私は100レコードがあると仮定して、それらはすべて数字([0-9])で始まり、次にテキストの文字列(例:1543 Tommyまたは12312312 SRARまたは92131 Toms hamzeまたは11 seka)を入力します。 –

+0

あなたはこれまでに試してみましたか?[regexを書く方法を知っていますか(http://regexr.com/) – mabe02

答えて

0

正規表現は、ここでは、画像の一部でしかありません。あなたの最善の策はそうのような部分をキャプチャすることです:

^(\d+)(?: [NS]?[WE]?)?(\w+(?: \w+)) (\w+)$ 

注:あなたがしたい場合は、アンカー^$を省略することができます。その後

、その後、あなたはそれぞれの可能性に言語の文字列比較演算子を使用することができます。

$3 == "foo" || $3 == "bar" || ... // should look something like this in C-like languages 

あるいは、あなたの言語がサポートしている場合:

$3 in ["foo", "bar", ...] 

その後$2を返すことができます。 JS例のために一緒にすべてを置く:

s.replace(/^(\d+)(?: [NS]?[WE]?)?(\w+(?: \w+)) (\w+)$/, (match, $1, $2, $3) => $3 in ["foo", "bar", ...] ? $2 : null)); 

は残念ながら、実際には可能性のすべてを入力せずにこれを行う方法はありません。

関連する問題