2組の数字の直後にあるように見えるので、次のようにすることができます。
void Main()
{
var addresses = new string[] {
"house no.966 s# 70 Kashmir road Peshawar road Rawalpindi",
"house no.970 st. # 43 Darian Kalar saeedan",
"H# 110 Street No.35 Dhowk kala Rwp",
"h# 124 Street No.73 G-11/3 ISB",
"h no.423 St. No.23 Chan chirag Rawat",
"H No.437 st. # 61 Chaklal scheme 3 RAWALPINDI"
};
Regex houseAndStreet = new Regex(@"(\d+).+?(\d+)");
foreach (string address in addresses)
{
Match match = houseAndStreet.Match(address);
string house = match.Groups[1].Value;
string street = match.Groups[2].Value;
Console.WriteLine ("House = {0}, Street = {1}", house, street);
}
}
エラーチェックを追加してより堅牢にする必要がありますが、それが基本的な考え方です。
正規表現は次のように分類されます。
(\d+)
グループ内の1つ以上の数字
.+?
他の文字の貪欲でない検索
(\d+)
別のグループの1つ以上の数字