基本的にアドレスを抽出するために正規表現を使用しています。私がやりたいことは、私のコードブロックのような正規表現を使用して住所を抽出できるようにすることですが、場合によっては、返された一致 (例: STREET A、CNR) に開始点/基準テキストを含めます。その他のケースでは、2 つのポイント間のすべてのテキストが取得されますが、返される一致にポイントの 1 つが含まれません。
文字列内の2つの定義されたポイント間のすべてを返す正規表現文字列を作成するのを誰かが手伝ってくれることを願っています。問題は、一致に正規表現 (例: CNR) のフレーズを含める必要がある場合と、別のフレーズを一致に含める必要がない場合 (例: テキストの例) です。
これは Regex の例です。この場合、STREET A が存在する場合、一致にそれが含まれます: Regex = New Regex("( CNR| STREET A| EXAMPLE TEXT)(.*?)(?=\SVSE| M | SVC | SVSW | SVNE |SVNW )"、RegexOptions.RightToLeft)
上記の正規表現で STREET A (または別のフレーズ) をマーカーとして使用して、正規表現の一致を返しますが、実際には一致自体に含めないようにするにはどうすればよいですか?
ありがとう!
以下に追加情報を含めましたので、お役に立てれば幸いです。これらはいくつかの例です:
一致の基準となるものはすべてイタリック体にしました。次に、太字にしたアイテムが一致する必要があります。これらはほんの数例ですが、実際にはアドレスが常に123例であるとは限らないため、正規表現は非常に多くの異なるものに一致する可能性がありますセント。
@@ALERT SMPL1 F0000000ガス管漏れ MAIN HWY SUBURB SVNW 1111 A1 (375302) SMPLT1 [SMPL]
@@ALERT F0000000 SMPL1 STRUC1 煙警報作動と煙の臭いCNRサンプルST/例 ST郊外 SVNE 1111 D7
@@ALERT SMPL1 F0000000自動車事故- POSS PERSON TRAPPED MAIN HWY SUBURB SVNW 1111 A1 (375302) SMPLT1 [SMPL]
@@ALERT F0000000 SMPL1 STRUC1ガスボトル爆発 サンプル ST/サンプル ST 郊外 SVNE 1111 D7
- - 詳しくは - -
これは現在の正規表現です(そして機能します)が、最初に複数の一致を除外するのに苦労しています:
(CNR|(([\d]+/[\d]+)|([\d]+ / [\d]+)|([\d]+-[\d]+)|([\d]+ - [\d]+)|( [\d]+ ))).*?(?=SV[NCSEW]| M )|(?<=GAS PIPE LEAK).*?(?=SV[NCSEW]| M )
これは私が試して達成したいことです:(しかし、うまくいきません)
(CNR|(([\d]+/[\d]+)|([\d]+ / [\d]+)|([\d]+-[\d]+)|([\d]+ - [\d]+)|( [\d]+ ))).*?(?=SV[NCSEW]| M )|(?<=(GAS PIPE LEAK|FIRE ALARM|SMOKE ALARMS|FIRE|)).*?(?=SV[NCSEW]| M )
文字列の例を次に示します。
@@ALERT F000000 BELM4 STRUC1 作動煙警報 JACARANDA ST 郊外 /ROAD ST M 000 K3 (000000)
@@ALERT F000000 BELM4 STRUC1 FIRE JACARANDA ST SUBURB /ROAD ST M 000 K3 (000000)
@@ALERT F000000 BELM4 STRUC1 爆発 123 JACARANDA ST SUBURB /ROAD ST M 000 K3 (000000)
@@ALERT F000000 BELM4 不明な火災 JACARANDA ST SUBURB /ROAD ST M 000 K3 (000000)