使用正则表达式将房屋#替换为房屋号码

时间:2012-12-30 05:59:27

标签: c# regex

我想找到并替换地址字符串中的门牌号码。 地址字符串如下

  1. House No.34 Street No. 45 Defense road
  2. House#334 Street#323 Bangla 133
  3. 所以,我想找到更换门牌号码的不同版本 字符串House no。

    门牌号的不同变化如下:

    1. 众议院号码
    2. 何。否
    3. ħ#
    4. House#
    5. 何#
    6. Ho no。
    7. 我尝试使用以下正则表达式来实现这一点,但大多数都失败了 门牌号码变化。

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

      你能否建议一个正则表达式来找到门牌号码的变化..?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

你可以直接做到这一点。只需将所有比赛放在一个组中。

regex =“\ bH(ouse No. | o。没有|#| ouse#| o#| o no。)”

众议院号码 何。没有 H# 屋 # 何# 何没有。