2012-03-06 5 views
0

사용자가 입력 한 문자열이 있고 데이터베이스에 내 정규 표현식이 있으며 데이터베이스 내의 해당 정규 표현식에 대해 입력 문자열을 검사 할 수 있습니다.많은 다른 정규 표현식에 대한 문자열을 한 번에 확인하고 싶습니다.

하지만 다른 정규 표현식을 포함 할 데이터베이스 내에서 다른 열을 추가해야하지만 동일한 반복문을 사용하여 입력 문자열을 다시 새 정규 표현식뿐만 아니라 첫 번째 루프의 끝에서 확인하고 싶습니다. 첫 번째 표현식
\\d < - -하지만 같은 문자열


\\D\\W\\D <에 대한 새로운 표현을 사용하려면 내가 처음 발현 후 사용하고자하는 두 번째 표현식

  1. 이상
  2. 동일한 루프 내에서 동일한 정규 표현식을 추가하고 동일한 문자열에 대해 확인하십시오 - 작동하지 않음
  3. 나는 데이터베이스에서 내 정규 표현식을 검색 할 수있는 방법

    std::string errorMessages [2][2] = { 
        { 
         "Correct .R\n", 
        }, 
        { 
         "Free text characters out of bounds\n", 
        } 
    }; 
    for(int i = 0; i < el.size(); i++) 
    { 
        if(el[i].substr(0,3) == ".R/") 
        { 
         DCS_LOG_DEBUG("--------------- Validating .R/ ---------------"); 
         output.push_back("\n--------------- Validating .R/ ---------------\n"); 
         str = el[i].substr(3); 
         split(st,str,boost::is_any_of("/")); 
         DCS_LOG_DEBUG("main loop done"); 
    
         for (int split_id = 0 ; split_id < splitMask.size() ; split_id++) 
         { 
          boost::regex const string_matcher_id(splitMask[split_id]); 
          if(boost::regex_match(st[split_id],string_matcher_id)) 
          { 
           a = errorMessages[0][split_id]; 
           DCS_LOG_DEBUG("" << a); 
          } 
          else 
          { 
           a = errorMessages[1][split_id]; 
           DCS_LOG_DEBUG("" << a); 
          } 
          output.push_back(a); 
         } 
         DCS_LOG_DEBUG("Out of the loop 2"); 
    
        } 
    } 
    

    을 다음과 같이

내 코드는이 루프 후 사용에 동일한 문자열에 대한 새로운 정규식을 완료했습니다.

문자열입니다 - 당신이

+0

더 많은 코드를 추가하려고하는 것 같습니다. 쓰시겠습니까? 귀하의 질문은 퀘스트처럼 들립니다. "내 코드에서 두 가지 이상을 어떻게 수행합니까?" – tenfour

+0

그래, 난 더 많은 코드를 추가 할 필요가 있지만 당신은 루프를 사용하여 정규식과 입력 문자열을 통해 루프를 사용하여 볼 수 있지만 그저 새로운 정규식을 추가하고 싶지만 그 결과는 제목별로 구분하여 표시됩니다. – CodersSC

답변

0

을 이해하지 않는 경우

"\\d" 내가 당신이라면 나는 전적으로 당신을 이해하지만, 확실하지 않다 나에게 어떤 질문을하기 - shamari
일반 expresssion 내가 추가 할 , 당신은 당신이 "또는"비교를하려면

combinedRegex = "(?:" + firstRegex + ")|(?:" + secondRegex + ")" 

을 할 필요가 "어떻게 하나의 정규식에 두 개의 정규 표현식에 결합 않는다"요구하는 것은 (어느 부분 중 하나는 MATC한다 h).

"및"비교의 경우이 정규 표현식이 전체 문자열과 일치하는지 또는 부분 문자열 만 일치하는지에 따라 조금 더 복잡합니다.

는 두 번째 정규식 번호 역 참조를 사용하는 경우 인덱스를 변경하기 때문에,이 작동하지 않습니다 유의하십시오 (\w+)\1(\d+)\1 예를 들어, (?:(\w+)\1)|(?:(\d+)\2)가 될 것이다.

+0

예 기본적으로 정규식 hm yes를 결합해야합니다. 그 이유를 생각하지 않았습니다./thanks @timpietzcker – CodersSC

+1

@OP : "combine"는 부울 연산자를 포함합니다 -이 경우 논리 "or"입니다. 당신이하는 일에 따라 논리적 "and"를 원할 수도 있습니다. – tenfour

+0

@tenfour :이 시점에 대해 감사드립니다. 나는 이것을 나의 대답에 추가했다. –

관련 문제