2011-11-04 5 views
1

현재 조작 할 문자열이 abXYabcXYZ 인 경우 "abc"가 아닌 모든 것을 모두 제거하고 싶습니다. 내 정규식 명령과 같이이다 : 리턴Regex가 요청한 문자를 모두 대체하지 않습니다

[^abc] 

AB ++ ABC+++, 내가 ++++ ABC+++ 반환해야 할 때. 동일한 문자열을 조작하여 "ab"가 아닌 다른 문자 만 바꾼다면 ab ++ ab ++++를 얻게 될 것입니다. 첫 번째 테스트에서 ab가 추가되지 않도록하려면 어떻게해야합니까?

+1

정규식은 완전히 잘못되었습니다. '[^ abc]는'a','b' 또는'c'가 아닌 모든 문자와 일치한다는 것을 의미합니다. 그리고 "정규식 명령"이란 무엇을 의미합니까? 정확히 무엇을 사용하고 있습니까? – NullUserException

+0

방법의 오류를 이해하려면,'axxxbxxxxcccxxxbbbbx'를 정규 표현식의 입력으로 사용해보십시오. – NullUserException

+0

행에 둘 이상의 요소가 있으므로 [^ abc] +를 시도하십시오. –

답변

0

NullUserException ఠ_ explained에서 설명한 것처럼 정규 표현식 [^ abc]은 a, b 또는 c이 아닌 단일 문자를 의미합니다. 단지 +를 대체 할 ab++abc+++에 교체를 수행하기 위해이 정규 표현식을 사용

(+은 [^ ABC]) (난 당신이 +에 [^ ABC]를 대체 있다고 생각) 문자열이 동일하게 유지하는 것이 결과 +합니다.

두 번째 상황에 대해서는 정규 표현식 [^ ab]을 사용하려고합니다.이 표현식은 c+과 일치하고 결과는 ab++ab++++입니다.

왜 그런지 설명해줍니다. \w+과 일치하는 정규 표현식이 있는지, abc과 같은 특정 문자열이 아닌지 여부는 알 수 없습니다. 경우에 따라 abc%과 같은 문자가 아닌 다른 문자열로 바꾸고 모두 \w+으로 바꾼 다음 abc으로 다시 바꿔으로 바꿔야하는 경우도 있습니다.

도움이되기를 바랍니다.

관련 문제