2014-07-23 7 views
1

나는 아래 나열된 행이 있습니다.시작 및 끝 정규식

remove product 100 unit replace with 200 
Remove Product 100 unit Replace 200 
Remove 100 unit Replace with a 200 
remove product 100 unit replace with an 200 
remove product2 100 unit replace with an 200 

나는 행운없이 아래 정규 표현식을 시도했다.

/([remove 100|remove Product 100](.*?)[replace with 200|replace with a 200|replace with an 200])/i 

첫 번째 네 개의 결과는 플래그하지만 네 번째 결과는 플래그 2로 설정해야합니다.

정규 표현식에 모든 플래그를 지정합니다. 예를 볼 수 있습니다 : http://regexr.com/396u3

도움이 될 것입니다.

+1

무엇을 캡처하려고합니까? –

+0

@AvinashRaj 분명히 '단위'라는 단어. – hjpotter92

+0

사과드립니다. 나는 어떤 말도 잡으려고하지 않고있다. 그냥 라인이 정규식 기준과 일치하는지 확인하고 싶습니다. 위의 내용은 참고 사항이며 '제품 100'에 제품 200을 제거하고 교체해야하는지 확인하고 싶습니다. – hawx

답변

1
/remove (?:product)?100(.*?)replace (?:with)?(?:an?)?200/gi 

위의 식이면 충분합니다. 귀하의 정규식이 될 것

1

,

^remove (?:product ?)?100 (\S+) (?:replace (?:with)?(?:an |a)?200)$ 

이 처음 4 개 라인 만 문자열 unit을 캡처 할 것입니다.

DEMO

+0

질문을 다시 읽으십시오. __ 처음 네 개의 결과를 표시해야하지만 마지막으로 'product2'*를 표시하지 않아야합니다. __ – hjpotter92

+0

@ hjpotter92이 (가) 업데이트되었습니다. 못 봤어. 그는 단지'unit' 문자열을 말합니다. 그래서 모든 5 줄에 대한 코드를 씁니다. –

1

귀하의 문제는 당신이 alternation

(remove 100|remove Product 100) 

대신 character class

[remove 100|remove Product 100] 

를 작성하는 문자 클래스 사이의 문자 중 하나의 문자와 일치하는지,이다 대괄호. 따라서 정규 표현식을

/((remove 100|remove Product 100)(.*?)(replace with 200|replace with a 200|replace with an 200))/i 

으로 변경하면 훨씬 더 잘 일치합니다.

관련 문제