![](images/tip_help.png)
기본 문자열 찾기 및 추출을 위해 일반 표현식 대신
indexOf()
,
substr()
또는
substring()
과 같은 String 클래스 메서드를 사용합니다.
일반 표현식을 사용하여 수행할 수 있는 일부 작업은 String 클래스의 메서드를 사용해서도 수행할 수 있습니다. 예를 들어, 문자열에 다른 문자열이 포함되는지 여부를 확인하려는 경우
String.indexOf()
메서드나 일반 표현식을 사용할 수 있습니다. 하지만 가능하다면 String 클래스 메서드를 사용하는 것이 상응하는 일반 표현식보다 속도도 빠르며 다른 객체를 만들 필요가 없습니다.
![](images/tip_help.png)
결과에서 그룹의 내용을 격리하지 않으면서 요소를 그룹화하려면 일반 표현식에서 그룹(“
(xxxx)
”) 대신 캡처하지 않는 그룹(“
(?:xxxx)
”)을 사용합니다.
복잡성이 중간 정도인 일반 표현식에서는 종종 표현식의 일부를 그룹화합니다. 예를 들어, 다음 일반 표현식 패턴에서 괄호는 "ab" 텍스트 주위에 그룹을 만듭니다. 따라서 "+" 한정 기호는 단일 문자가 아닌 그룹에 적용됩니다.
/(ab)+/
기본적으로 각 그룹의 내용은 "캡처"됩니다. 일반 표현식을 실행한 결과의 일부로 패턴에서 각 그룹의 내용을 가져올 수 있습니다. 이러한 그룹 결과를 캡처하면 그룹 객체를 포함하기 위한 객체가 생성되기 때문에 시간이 더 오래 걸리고 메모리도 더 많이 필요합니다. 이에 대한 대안으로 시작 괄호 다음에 물음표와 콜론을 포함하여 비캡처 그룹 구문을 사용할 수 있습니다. 이 구문은 문자가 그룹으로 동작하지만 결과가 캡처되지 않도록 지정합니다.
/(?:ab)+/
비캡처 그룹 구문을 사용하는 것이 표준 그룹 구문을 사용하는 것보다 속도도 빠르고 메모리도 덜 사용합니다.
![](images/tip_help.png)
일반 표현식의 성능이 낮을 때는 다른 일반 표현식 패턴을 사용하는 것이 좋습니다..
일부 경우에는 동일 텍스트 패턴을 테스트하거나 식별하기 위해 두 개 이상의 일반 표현식 패턴을 사용할 수 있습니다. 여러 가지 이유로 인해 여러 패턴들 중 실행 속도가 빠른 패턴이 존재합니다. 일반 표현식으로 인해 코드 실행 속도가 필요한 것보다 더 느리다고 판단되는 경우에는 동일한 결과를 얻을 수 있는 대체 일반 표현식 패턴을 고려하십시오. 이러한 대체 패턴을 테스트하여 속도가 가장 빠른 패턴을 확인합니다.
|
|
|