2013-07-20 2 views
0

인 경우를 제외하고 전체 문자열과 일치하는 정규식 문자열이 "/"이 아닌 한 전체 문자열과 일치하는 좋은 정규식은 무엇입니까?문자열이/

사용 사례 : 다시 쓰기 규칙입니다. 뒤쪽에 /를 추가하는 랙 다시 쓰기 작업.

내가이 필요합니다

/foo -> /newpath/foo 
/-> newpath 

두 번째 예제는 후행 슬래시가 없습니다.

Regex - Match Entire String Unless을 살펴 보았지만 "/"를 제외한 모든 부분에 적용 할 수있는 방법을 몰랐습니다.

루비에서 일하기.

+4

왜 "string"! = "/"'이라고 말할 수있을 때 정규식인가? – squiguy

+0

@squiguy 정규 표현식을 사용하여 .htaccess로 작성한 다시 쓰기 규칙이 발생합니다. – alfasin

+0

@alfasin이 경우 부정 문자 클래스가 수행해야합니다. – squiguy

답변

2

이 목적을 위해 정규식을 사용하는 것이 완전히 잘못이지만, 귀하의 요청에 따라 :

re = %r{(?!\A/\z)(\A.*\z)} 

"foo"[re] #=> "foo" 
" /"[re] #=> " /" 
"/ "[re] #=> "/ " 
"/"[re] #=> nil 

당신이 문자열 "/" 경우를 제외하고 문자열을 얻고 싶은 경우에, 그것을 할 수있는 방법은 다음과 같습니다

string unless string == "/" 
+0

그럼 어떻게 할거 니? https://github.com/jtrupiano/rack-rewrite –

+0

답변에 그 사용법을 추가했습니다. – sawa

+0

이 목적을 위해 정규식을 사용하는 것이 완전히 잘못된 경우 어떻게할까요? –

1
rewrite %r{.*}, lambda { |match, rack_env| 
    url = match[0] 
    url == "/" ? "newpath" : "/newpath#{url}" 
    } 
+0

당신의 솔루션은 나에게 조금 흥미로울 것입니다 ... 그러나 왜 당신이'람다 '를 사용했는지 알고 싶습니까? –

+0

@Priti, 랙을 다시 쓰는 의사가 할 수 있다고 말합니다. – 7stud

+0

그 문서를 연결하십시오. –