2010-12-27 2 views
0

\\d+alp*ha\ 대신 \(?:\d+)alp*ha\을 사용하겠습니까 ??일치하는 부분을 기억하지 못하면 regex에서 괄호를 사용하는 것이 무엇입니까?

+1

누구를 위해 정말로 일하고 있습니까? CIA 요? 폭도? 먼 태양계에서 온 외국인은 우리 자신과는 완전히 다른가요? – Pointy

+1

Javascript에서는 정규식을 백 슬래시로 구분할 수 없습니다. 대신에 슬래쉬 말입니까? –

+0

@ 마크 바이어스 나는이 세상의 많은 사람들이 \/같은 것을 고려한다는 증거에 종종 슬다. – Pointy

답변

2

예에서 괄호를 추가 할 이유가 없습니다. 그러나 다음을 고려하십시오.

/(?:\d+A?)*alp*ha/ 

이 예제에서 괄호는 반복 할 수있는 그룹을 정의합니다. 괄호없이 표현하는 것은 불가능합니다. (괄호 안함 - /\d+A?*alp*ha/ - 완전히 다른 것입니다.)

1

이 예에서는 캡쳐되지 않은 괄호를 사용하지 않습니다. 그들은 이전의 좀 더 복잡한 표현으로부터 남은 유물 일 수있다.

일반적으로 대체 표현식이 더 복잡한식이거나 문자열을 한정해야하는 경우 일반적으로 비 캡처 식 괄호가 유용합니다.

(?:\d+|abc)?alp*ha 

이렇게하려면 캡쳐되지 않은 괄호가 필요합니다.

예에서 이스케이프 된 (또는 이스케이프 처리되지 않은) 백 슬래시에 문제가있는 것 같습니다. 사업자우선에있다는 점에서

1

정규 표현식 구문은 대수 구문과 같다. 괄호 (모든 종류)는 두 가지 역할을 수행합니다. 연산자 바인딩 의 다양한 종류의 그룹화, 숨김 및 검색 조정을 명시 적으로 제어합니다.

관련 문제