2011-11-16 9 views
2

중간에 문자열과 일치해야하는 정규식 패턴을 작성하고 싶습니다. 예를 들어정규식에서 단어 사이에 일치하는 방법?

:

나는 mystring에를 포함 doesnot 일치하는 단어를 의미한다이

^((?!mystring).)*$ 

같은 writtenthe 정규식 패턴을 가지고있다. 하지만 정규식 패턴이 이와 일치하도록합니다.

mystringabcdfrevrgf 

정규식 정규은

abcdfrevrgf 

내가 이것을 달성하는 방법, 사전에 감사를 도와주세요 반환해야합니다.

답변 :

((?!mystring)(.*))$ 
+0

정규식이 필요하고 일치하지 않아야한다고 생각합니다. @ 팀의 대답을 참조하십시오. 그는 모든 기지를 뒤덮었습니다. – FailedDev

+1

"대답"-'((?! mystring) (. *)) $'-'abcdfrevrgf'가 아니라'ystringabcdfrevrgf'와 일치합니다. RightToLeft 옵션을 선택한 상태에서 .NET을 사용하지 않는 한. 어쨌든 당신이 사용하고있는 향기 *는 무엇입니까? 이에 따라 질문에 태그를 답니다. –

답변

4

는 당신이 일치하고있는 문자열에서 mystring을 제거하기 쉽게하지 않을까요? (파이썬 예)에서와 같이

: mystring 사실 정규식 인 경우 물론에만 의미가 있습니다

>>> re.sub("mystring", "", "mystringabcdfrevrgf") 
'abcdfrevrgf' 

, 그렇지 않으면

>>> re.sub("my.*?g", "", "xyzmystringabcdfrevrgf") 
'xyzabcdfrevrgf' 

같은 일반 문자열 조작 함수가 더 빠를 것이다, 당연하지.

var str = 'mystringabcdfrevrgf'; 
var regex = /^mystring(.*)$/; 

var result = str.match(regex)[1]; 
//result contains 'abcdfrevrgf' 
0

는 소리가 난다. 텍스트 XYZ와 XZ의 목표가 주어지면 엔진은 X와 Z를 2 일치로 반환 한 다음 연결을 사용자에게 맡길 수 있습니다. Y와 일치하고 빈 문자열로 바꾸기가 가능합니다. 연속 된 문자열이 아니기 때문에 XZ를 직접 일치시킬 수 없습니다. 정규식 엔진의 내부 구현을 살펴보면 각각의 일치가 보통 한 쌍의 정수 (matchStartIndex, matchEndIndex 또는 matchStartIndex, matchLength)로 정의되므로 중간에 문자를 제외 할 수 없습니다.

1

정규 표현식 엔진에 의해 반환 된 각 경기 연속 문자열입니다 : 당신이 원하는 것처럼

관련 문제