일반 표현식

기본 문자열 찾기 및 추출을 위해 일반 표현식 대신 indexOf() , substr() 또는 substring() 과 같은 String 클래스 메서드를 사용합니다.

일반 표현식을 사용하여 수행할 수 있는 일부 작업은 String 클래스의 메서드를 사용해서도 수행할 수 있습니다. 예를 들어, 문자열에 다른 문자열이 포함되는지 여부를 확인하려는 경우 String.indexOf() 메서드나 일반 표현식을 사용할 수 있습니다. 하지만 가능하다면 String 클래스 메서드를 사용하는 것이 상응하는 일반 표현식보다 속도도 빠르며 다른 객체를 만들 필요가 없습니다.

결과에서 그룹의 내용을 격리하지 않으면서 요소를 그룹화하려면 일반 표현식에서 그룹(“ (xxxx) ”) 대신 캡처하지 않는 그룹(“ (?:xxxx) ”)을 사용합니다.

복잡성이 중간 정도인 일반 표현식에서는 종종 표현식의 일부를 그룹화합니다. 예를 들어, 다음 일반 표현식 패턴에서 괄호는 "ab" 텍스트 주위에 그룹을 만듭니다. 따라서 "+" 한정 기호는 단일 문자가 아닌 그룹에 적용됩니다.

/(ab)+/

기본적으로 각 그룹의 내용은 "캡처"됩니다. 일반 표현식을 실행한 결과의 일부로 패턴에서 각 그룹의 내용을 가져올 수 있습니다. 이러한 그룹 결과를 캡처하면 그룹 객체를 포함하기 위한 객체가 생성되기 때문에 시간이 더 오래 걸리고 메모리도 더 많이 필요합니다. 이에 대한 대안으로 시작 괄호 다음에 물음표와 콜론을 포함하여 비캡처 그룹 구문을 사용할 수 있습니다. 이 구문은 문자가 그룹으로 동작하지만 결과가 캡처되지 않도록 지정합니다.

/(?:ab)+/

비캡처 그룹 구문을 사용하는 것이 표준 그룹 구문을 사용하는 것보다 속도도 빠르고 메모리도 덜 사용합니다.

일반 표현식의 성능이 낮을 때는 다른 일반 표현식 패턴을 사용하는 것이 좋습니다..

일부 경우에는 동일 텍스트 패턴을 테스트하거나 식별하기 위해 두 개 이상의 일반 표현식 패턴을 사용할 수 있습니다. 여러 가지 이유로 인해 여러 패턴들 중 실행 속도가 빠른 패턴이 존재합니다. 일반 표현식으로 인해 코드 실행 속도가 필요한 것보다 더 느리다고 판단되는 경우에는 동일한 결과를 얻을 수 있는 대체 일반 표현식 패턴을 고려하십시오. 이러한 대체 패턴을 테스트하여 속도가 가장 빠른 패턴을 확인합니다.