1

住所文字列の番地を見つけて置き換えたい。アドレス文字列は次のとおりです

  1. 34番地 45番街道 防衛道路
  2. ハウス #334 ストリート #323 バングラ 133

だから、家番号のさまざまなバリエーションを文字列の家番号に置き換えたいと思います。

家屋番号のさまざまなバリエーションは次のとおりです。

  1. 家屋番号
  2. ホー。いいえ
  3. H#
  4. 家 #
  5. ホー #
  6. ほの。

これを実現するために次の正規表現を使用しようとしましたが、家番号文字列のバリエーションのほとんどで失敗します。

string hno_regex =  ((i?)h.[^#]*.);

家番号文字列のバリエーションを見つけるための正規表現を提案していただけますか..?

4

2 に答える 2

2

私はこれを提案します:

hno_regex = @"(?i)\bH(?:o(?:use\b|\.)?)?\s*(?:#|\bno\b\.?)";

説明:

(?i)   # case-insensitive mode on
\b     # Match a word boundary (start of word)
H      # Match H
(?:    # Try to match...
 o     # an o
 (?:   # followed by...
  use  # "use"
  \b   # (end of word)
 |     # or
  \.   # a dot.
 )?    # Make that part of the match (use|.) optional
)?     # as well as the previous part (o).
\s*    # Match optional whitespace
(?:    # Try to match
 [#]   # a hash mark
|      # or
 \b    # (start of word)
 no    # "no"
 \b    # (end of word)
 \.?   # optional dot.
)      # (End of alternation)
于 2012-12-30T06:03:25.903 に答える
0

直接的な方法でそれを行うことができます。すべてのマッチをグループに入れるだけです。

regex="\bH(use No.|o. No|#|use #|o #|o no.)"

ハウスナンバーホー。ノ H# ハウス # ホ # ホノ。

于 2012-12-30T13:50:33.343 に答える