VerbalExpressions - RegularExpression이 쉬워졌습니다.

새로운 프로그래밍 언어를 배우기 시작할 때 변수, 대입, 문자열, 연산자 등의 단계를 따라 배우고 있었을 것입니다. 집중해야 할 주요 주제 중 하나는 string operations 입니다. Fox 예제: 전체 이름에서 이름 가져오기, 메시지에서 모든 휴대폰 번호 찾기 및 검열,...

작업을 진행하면서 일반적으로 몇 가지 일반적인 절차를 처리해야 합니다. 반복되는 절차 중 하나는 하위 문자열을 찾고 하위 문자열에 대한 일부 작업을 구현하는 것입니다. 학습 경로의 맨 처음에 이와 같은 작업을 수행했을 수 있습니다.

int checkMatchStubPattern(char* string) {
    for(int i = 0; i < strlen(string); i++) {
        // logic for checking string pattern
        ...
    }
    return ...
}

잘못된 방법은 아니지만 시간이 많이 걸립니다. 모든 경우에 검사 로직을 변경해야 합니다. 더 많은 코드, 더 많은 버그, 물론 유지 관리가 어렵습니다. 운 좋게도 Regular Expression - Regex는 이러한 종류의 문제를 해결하는 영웅으로 등장합니다. 찾기, 입력 유효성 검사... Regex 사용에 대한 확인으로 모든 프로그래밍 언어는 문자열 작업에 대해 Regex를 지원합니다.

Regular expression is a sequence of characters that define a search pattern. This pattern is then used by string searching algorithms for "find" or "find and replace" operations on strings, or for input validation. (Source: Wikipedia)


Regex는 이 문제를 해결하는 효율적인 도구입니다. 그러나 대가가 따릅니다. 읽고 이해하기가 정말 어렵습니다(하지만 배우기는 어렵지 않습니다). 먼저 아래 예제를 읽어보십시오.



구문이 복잡하기 때문에 읽고 이해하기가 매우 어렵습니다Regex . 게다가 당신은 Regex와 너무 자주 일하지 않는 것 같습니다. ROI(투자 수익률)가 너무 낮습니다. 당신이 사용해야 하는 거의 일반적인 Regex 인터넷에서 찾을 수 있습니다 (비밀번호, URL, IP 주소,...). 1년에 4~5회만 사용하는 것을 배우기 위해 몇 주를 보낼 의향이 있습니까? 아니면 약 5분 안에 결과를 얻기 위해 일부 사이트를 훑어보는 것입니까? 이러한 사고 방식으로 인해 개발자는 Google에서 일부Regex를 검색하고 필요에 맞게 수정합니다. 때로는 검색-수정의 반복 프로세스에 몇 시간에서 하루 종일 걸릴 수 있습니다.


Regex string operation 문제를 해결하고; 그러나 Regex의 문제는 어떻습니까? 다행히 Verbal Expressions 으로 해결할 수 있습니다. 이 예를 살펴보십시오.

VerEx()
.startOfLine()
.then('http')
.maybe('s')
.then('://')
.anythingBut(' ')
.endOfLine();

이 예제를 읽은 후 좌절하지 않기를 바랍니다. 위의 Verbal Expressions는 다음 규칙에 따라 정의됩니다.
  • URL은 "http"또는 "https"로 시작해야 합니다.
  • 그러면 URL에 "://"가 있어야 합니다.
  • URL은 공백이 아닌 한 "://"뒤에 오는 모든 항목을 포함할 수 있습니다.

  • 위의 코드에서 생성된 Regex/^(?:http)(?:s)?(?:\:\/\/)(?:[^ ]*)$/ 입니다. 약간 다르지만 기능은 동일합니다. 여러 언어here에서 Verbal Expressions의 구현을 찾을 수 있습니다.

    VerbalExpressions는 Regex의 가장 큰 문제를 해결합니다. 읽기 쉽고 이해하기 쉬운 정규식입니다. 제 생각에는 Regex에서 VerbalExpressions로의 전환은 SQL에서 ORM로의 이동만큼 큽니다.

    어쨌든 VerbalExpressions에는 여전히 몇 가지 단점이 있습니다. 프로젝트에 새 라이브러리를 설치해야 하는데 때로는 매우 고통스럽습니다(예: 클라이언트, 관리자... 필요하다고 생각하지 않음). 이 경우 VerbalRegex으로 이동할 수 있습니다. 코드를 작성하면 Regex가 생성됩니다.



    verbalregex.com에 액세스하여 이 도구를 사용해 보십시오.

    결론


    VerbalExpressionsRegex를 대체하지 않습니다. 그러나 읽기 쉬운 쓰기 방법Regex . Regex 의 고통을 덜어주고 실제로 표현을 다시 재미있게 만들 수 있습니다. 그러나 일부 복잡한 경우에는 여전히 Regex가 최선의 선택인 것 같습니다.

    좋은 웹페이지 즐겨찾기