2015-01-26 2 views
-1

자바 스크립트에서 .txt 파일을 읽고 HTML 테이블에 파싱합니다. 그것은 완벽하게 작동합니다. 그 정보에는 첫 번째와 두 번째 줄 (두 번째는 아파트 번호, 공간 번호 등)의 조합 인 주소 줄이 있습니다. 그것들을 한 줄로 읽습니다.

내가하려고하는 것은 첫 번째 및 두 번째 주소 줄이 분리되어 데이터베이스에 정상적으로 공급 될 수 있도록하는 것입니다. 그것들을 깨기 위해서, 나는 생각할 수있는 많은 옵션들을 잡기 위해 정규 표현식을 작성했다. 대부분은 완벽하게 잘 작동합니다. 작은 예를 든 모든 테스트가 제대로 작동한다고해도 그 중 한 명은 올바르게 작동하지 않습니다. 사용 Demo
Javascript 정규식이 작동하지 않습니다.

정규식 :

([\,\s]*)(Ste |Ste\.) 

에 :

는 여기에 내가 함께 작동하도록 노력하고있어 정규 표현식의 부분의 I가 시도했습니다

12 Watershore Circle 
825 Stewart Street 
820 N Lincoln Way 
9235 Bella Vista Way 
P.O. Box 4438 
9936 Stone Oak Way 
599 Hamstead Drive 
3941 Park Drive Ste 20 #147 
3609 Bradshaw RD,ste H #107 
7909 Walerga Road, Ste. 112, PMB 108 

옵션

내가 원하는 걸 :

([\,\s]*)(Ste |Ste\.) 
([\,\s]+)(Ste |Ste\.) 
(\,*[\W]Ste[\W]|\,*[\W]Ste\.[\W]) 

내 웹 페이지에서 라이브 결과는 이러한 평균이 생각하는 것 무엇 :

(\,*[\w]Ste[\w]|\,*[\w]Ste\.[\w]) 

또는 당신이 볼 수 있듯이

, 난 그냥 "인트를"분리하기 위해 노력하고있어 (대소 문자 구분) 나머지 줄에서. 실제 테스트에서 어떤 일이 일어나고있는 것은 "Ste"(대소 문자를 구별하지 않음)의 모든 인스턴스가 중단된다는 것입니다. 위에 제공된 링크에는 라이브 실행에서 얻는 것을 생성하는 예제 정규 표현식이 있습니다.

이 정규 표현식 상황은 Razor (C#) 뷰 페이지가있는 MVC 4의 JavaScript 코드입니다. 다시 말하지만, 여기에 나열되지 않은 정규 표현식의 나머지 부분은 전혀 다른 구문을 찾고 있습니다. 그것은 단지 하나의 조각입니다.

이 문제를 올바르게 디버깅하는 방법에 대한 제안은 크게 감사하겠습니다. 고맙습니다.

+0

당신의 정규식은''[공백]'또는''[임의의 공백]''을 찾습니다. '.'와 같이 문자'.'를 목표로 할 때는 언제나'.'를 벗어나야합니다. 이 정규 표현식을 사용하는 코드를 보지 않고 정규 표현식을'([\, \ s] *) (Ste \.?)'로 줄일 수 있습니다. –

+0

저의 오타에 잘 어울립니다. 나는 그 기간 동안 적절한 탈출구로 바꿨다. 불행히도 이것은 여전히 ​​두 가지 경우에 문제가되고 있습니다. 어떤 이유로 든 내가 사용한 방식을 사용하면 앞면에있는 공백과 쉼표가 완전히 선택 사항이므로 "Allister"와 같은 단어가 분리됩니다. 둘 중 하나 이상을 강제로하기 위해'([\, \ s] +) (Ste \.?)'로 변경하면, 데모. – TerriWiseden

+0

아마도 아무 것도 변경하지 않지만 쉼표를 이스케이프 할 필요는 없습니다. – cbreezier

답변

0

그래서, 분명히, Crazysheep, 귀하의 의견은 매우 중요했습니다. 탈출구에 대해 생각해 봤어요.

제 질문에 게시하는 것을 게을리하는 것은 자바 스크립트에서 정규 표현식으로 직접 정규 표현식을 작성하지 않았기 때문입니다. 줄의 길이 때문에 문자열로 작성하여 여러 줄에 걸쳐 나누어서이 문자열을 일반 표현식으로 바 꾸었습니다


이 작은 세부 때문에 모든 슬래시 이스케이프는 String 이스케이프처럼 작동합니다. 이것은 내가 \.을 가지고있을 때마다 String에 대해 .이라는 문자 그대로 정규 표현식을 사용하지 않는 것을 의미합니다. 이것은 모든 이스케이프에 적용됩니다.

정규식 형식으로 보았을 때 (\. \d+)과 같은 부분이 있기 때문에 모든 부분이 공백으로 나뉘어져 있었기 때문에 D가 전혀 눈에 띄지 않았습니다.예는 : 어떤 정규 표현식에 \. 될 것이기 3 Drive 또는

a Dr.는, 문자열에서,이 문제를 해결하려면, 나는 그것이 정규 표현식의에이 같은 \ 그래서이 기능을 할 수 탈출하기 위해, \\.을 뒀다.

감사합니다. Crazysheep, 당신이 아는 것보다 더 많은 것을 도왔습니다! XD

관련 문제