2014-04-03 2 views
4

나는 한 가지 질문에 답하고 있었고 나는 tenub에서 comment을 얻었다.RegEx의 깊게 중첩 된 그룹

코멘트했다 :

는 추가되는 말머리 내용이뿐만 아니라 숫자로 구성되어 있기 때문에 $ {1} 000을 사용해야합니까?

그래서이 정규식을 사용하면. (실용성을 찾지 마십시오.이이 질문에 대한 의도적 인)

^(((((((((((.{3}))))))))))) 

을 그래서 "some string" .Groups이 $1$11에 포함 된 문자열. "som". 또한 $11로 표시되는 그룹 11 일치,

$11 // Group 1 followed by my replace string "1" 

을하지만 : 나는 some1 문자열과 같은 위의 문자열을 대체하고 싶다면 지금, normall 것

는 않습니다.

콜백 함수에 대해 알고 있지만 특정 정규식이 있는지 알아야합니다.

그래서, 내 질문 : 정규식에서 유효 같은 중첩 된 그룹 왜 $11

  • 에 의해 표현되는 문자열 1와 Group11 대체 사이에 충돌이 없도록

    1. 특별한 문법이있다. 중첩 그룹을 사용하는 테스트 사례는 무엇입니까?
  • +0

    '($ 1) 1'? 더 유연한 마지막 매개 변수로 문자열 대신 콜백을 대체 할 수도 있습니다. 그러한 중첩 그룹은'{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}} 유효한 JavaScript입니다 - 쓸모없는 것을 언어로 작성해도 쓸모 없게 만들지는 못합니다. –

    +0

    나는 자바 스크립트가 쓸모 없다고 말하지 않았다. 테스트 케이스가 무엇인지 물어보십시오. @BenjaminGruenbaum –

    +0

    아니요, 자바 스크립트는 쓸모가 없습니다. -하지만'{{{{{{}}}}} '은 쓸모가 없습니다. 그냥 정규식과 같습니다. –

    답변

    3

    모호성을 해결하기 위해 일치하는 그룹 앞에 0을 추가 할 수 있습니다. MDN과 일치하면 1 또는 2 자리의 역 참조 만 가능합니다.

    "some string".replace(/^(((((((((((.{3})))))))))))/, '$011'); 
    \\ => "som1e string" 
    
    +0

    +1,하지만 이것은 MS의 입장에서 보면 절름발이입니다. – sln

    관련 문제