2015-02-03 3 views
0

효과적으로, 정규식 코드 :REGEX - (? : '| ") 대 ['"] -> 같은 효과 또는 차이점이 있습니까?

 
A) (?:'|") 
B) ['"] 

는// 행동을 같은 일을 초래하거나 다른 하나는 다른 사이에 작은 차이가 있습니다 것인가?

참고 :이 여기에 이것과 약간 유사한 또 다른 질문입니다 : What's the difference between regex [-+]? and (-|+)? 는하지만이 캡처 그룹이나 옵션 을 고려하지 않기 때문에 내 경우는 다른 하나는 다르다? 각 옵션에 대해 그것은 (? :) 대 []의 비교에서보다 직설적이다.

+0

에있는 실행할 .. –

+0

예, 그들은 동일합니다. 이 둘 사이의 속도 차이가 무의미하다고 가정합니다. 자신이하려는 일을보다 명확하게 설명하는 것을 선택하십시오. –

+0

@AndyLester : 그들은 이론 정규 표현식과 동일하지만 '(? :'| ')'을 문자 클래스로 변환하지 않는 정규식 엔진에서 (? :'| ')'추가 백 트랙킹을 유발할 수 있으며 성능을 떨어 뜨린다. – nhahtdh

답변

1

거기에는 몇 가지 작은 차이점이 있습니까?

  1. 첫 번째 것은 두 번째 것보다 길다.
  2. 첫 번째는 캡처하지 않는 그룹이라고하고 다른 하나는 문자 클래스라고합니다.

동일한 효과가 있습니까? 아니면 차이가 있습니까?

문자 클래스 비 캡처 그룹보다 다른 *보다 약간 빠른이고, 기능에 관한 어떠한 차이가 없다. 테스트를 바탕으로

* 이상 두 번 같은 일을 할 것입니다 http://jsperf.com/non-capturing-group-vs-character-class