2012-12-30 4 views
1

주소 문자열에서 집 번호를 찾아 교체하고 싶습니다. 다음과 같은 주소 문자열입니다집 번호를 정규 표현식을 사용하여 집 번호로 바꿉니다.

  1. 하우스 No.34 거리 45 호 국방 도로
  2. 하우스 # 323 벵골어 133

그래서, 내가 다른 변화를 교체 찾으려면 334 거리 # 집 번호 a string 집 번호.

  1. 하우스 제
  2. 호 : 다음과 같이

    집 번호의 다른 변화가 있습니다. 어떤

  3. H #
  4. 하우스 #
  5. 호 #
  6. 호 아니오. 없습니다

나는 이것을 달성하기 위해 다음 정규 표현식을 사용하려고했지만 집 번호 문자열 변형의 대부분이 에 실패했습니다.

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

집 번호 문자열의 변형을 찾으려면 정규식을 제안 할 수 있습니까?

+1

나는 그 정규식을 실제로 사용하지 않았다고 생각합니다. 예를 들어 주위를 따옴표를 잊어 버렸습니다. 코드를 제공하는 경우 올바르게 복사하여 붙여 넣으십시오. –

답변

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

패턴에')'가 없거나'(')가 너무 많습니다. '\ bno'가 있기 때문에 HoNo 또는 HNO와 일치하지 않습니다. – Kobi

+0

@Kobi : 주목 해 주셔서 감사합니다. 맞아 물론. –

+0

죄송합니다. 덕분에 많은 도움을 주셔서 감사합니다 .--) 당신은 그것을 설명 할 수 있습니까? – user1773438

0

당신은 직접적인 방법으로 그것을 할 수 있습니다. 모든 경기를 그룹에 넣기 만하면됩니다.

정규식 = "\ BH (여러개 호 | 오 없음. | # | 여러개 번호 | O # |없고 오.)"

집 번호 호. No H # House # Ho # Ho 번호.