2012-11-27 6 views
3

나는 최근에 정규 표현식을 배우기 시작했다. 나는 지금 문제가 적다.정규 표현식을 사용하여 문자열에서 일치하는 수를 얻는 방법?

은 내가 실제로 본 문서에 hawaian 호텔, hawaian 해변과 hawaian 피자를 일치 시키려면이

var pattern = /^(?:hawaian(?:beach|pizza|hotel))$/gim; 
var text = "hawaian hotel is near hawaian beach. In the hawaian hotel they sell hawaian pizza"; 

같은 패턴을 갖는입니다.

그러나 패턴은 hawaianhotel || 하웨 비아 || hawaianpizza.

그래서 나는이

var text = "hawaianhotel is near hawaianbeach. In the hawaianhotel they sell hawaianpizza"; 

같은 시도하지만이 또한 작동하지 않습니다. 패턴이 전체 문자열과 일치하는 경우에만 문자열과 일치 할 수 있도록

만이 하나, 시작 및 문자열 앵커의 끝

var matches = pattern.exec('hawaian*'); 
+1

첫 번째 표현의 문제는 'hawaian'과 다른 단어 사이에 공백이 없다는 것입니다. 'hawaian beach '와 결코 일치 할 수 없다. 또 다른 문제는 문자열의 처음과 끝 부분에 표현식을 고정시키고 있지만 문자열에 'hawaianhotel'또는 'hawaianbeach'보다 더 많은 문자가 포함되어 있다는 것입니다. –

+0

@FelixKling : 감사합니다 ... – karthick

+0

http://www.regular-expressions.info/는 정규 표현식에 대해 자세히 알아볼 수있는 좋은 장소입니다. –

답변

2

귀하의 패턴을 사용하고있다. ^$을 삭제하면 정상적으로 처리됩니다. "hawaianhotel"대신 "hawaian hotel"과 일치 할 수 있도록 공간을 추가했습니다.

var pattern = /(?:hawaian (?:beach|pizza|hotel))/gim; 
+0

감사합니다. 답에서 regexp에 대해 더 많이 이해했습니다. – karthick

3
(?:hawaiian[ ](?:beach|pizza|hotel)) 

이 하와이 피자에 일치

공지 사항에서 [] 예를 들어, 당신은 당신이 [0-9]를 할 것이다 또는 당신이 원하는 경우 [2] 또는 일치 hawaiian2hotel 일치하기를 원한다면 "하와이 (공간의 임의의 숫자) 호텔은"당신은 (0 개 이상) * [] 않거나 것이다 [] + (하나 이상)

또한,이 멋진 도구 http://iblogbox.com/devtools/regexp/

+0

'[]'는 필요하지 않습니다. 그냥 공백을 넣을 수 있습니다. –

+2

예, 가독성을 위해 선호합니다. – Preston

관련 문제