2014-11-01 3 views
0

는 질문 : 내 세부 혼란 사람으로 보이기 때문에Regex로 캡처 그룹을 제외한 모든 것을 어떻게 선택합니까?

가, 두 번째 아래 모든 것을 잊어 버려 (또는 다른 사람이 정말 복잡하다).

"이 (모든) 캡처 그룹과 일치하는 것을 제외한 모든 항목"을 정규식과 일치시키고 싶습니다.

내가 무엇을 시도했다 :

I saw this question하지만 답변 질문 모두는 실제로 구문 작품, 그래서 그것을 파악하지 못할 이유는 방법/설명없이 약의 상황을 이야기한다.

나는 "negative-look-ahead"를 ?!으로 보았지만, 내가 어떻게하려고 하는지를 실제로 이해하지 못했습니다.

캡처 그룹을 제외한 모든 항목을 일치 시키려고합니다 (예 : ("[a-z]*",)). 예를 들어

이 멀티 라인 목록 :

"buckeye", 
"buckeye" 
, 
." 
," 
"fbfdb 
"feve, 

어떻게 내 경우 "buckeye", 또는 " + 어떤 납입 AZ 문자 + ",의 설정과 일치해야 캡처 그룹 (제외한 모든 선택 할) 정규식과 함께?

"aidman", 
"aidmen", 
"aids", 
"aiglet", 
"aiglets", 
"aigret", 
"aigrets", 
"aigrette", 
"aigrettes", 
"aiguille", 
"aiguilles", 
"aikido", 

나는 형식을 변경하는 데에 내 텍스트 편집기로 일부 교체를 실행하지만, 무리 : 나는 다음과 같은 항목이 많은 파일을 가지고 있기 때문에 그 이유는이 필요


입니다 임의의 일이 10 만 줄 중 20 개 (버그) 발생했습니다. 그래서 부적절한 형식의 라인을 찾아야합니다.

명확한 설명 :이 질문에 대한

내 목표는 "이 캡처 그룹을 제외한 모든 일치 할"말을하는 방법을 이해하는 것입니다.

+1

"캡처 그룹을 제외한 모든 것"은 무엇을 의미하는지 이해할 수 없습니다. 일치시키고 자하는 것과 일치시키지 않으려는 것의 몇 가지 예를 저희에게주십시오. – Dialecticus

+0

@Dialecticus 나는 명확히했다, 미안. 그러나 실제로, 나는 어떤 * 캡쳐 그룹과 함께 그것을하는 방법을 배우려고 노력하고있다. –

+0

예상되는 결과는 무엇입니까? –

답변

0

당신은 PCRE 동사 (*SKIP)(*F)을 사용할 수,

"[^"]*",(*SKIP)(*F)|.+ 

DEMO

위의 정규식은 모든 "...", 문자열을 건너 뛰고 나머지 라인과 일치하는 것입니다.

OR 부정적 예측 주장 스루

,

^(?!.*"[^"]*",).*$ 

DEMO

(?!.*"[^"]*",) 부정적 예측이 특정 라인 "...", 같은 문자열이없는 것을 주장한다. 그렇다면 해당 줄이 일치합니다. 정규식의 룩어 (look-rounds)는 조건 확인 목적으로 사용됩니다.그것은 어떤 문자도 소비하지 않을 것이지만 일치가 일어날 지 여부를 주장합니다.

^      the beginning of the string 
(?!      look ahead to see if there is not: 
    .*      any character except \n (0 or more 
          times) 
    "      '"' 
    [^"]*     any character except: '"' (0 or more 
          times) 
    ",      '",' 
)      end of look-ahead 
.*      any character except \n (0 or more times) 
$      before an optional \n, and the end of the 
         string 
+0

http://regex101.com/r/uC2uV8/3을 의미합니까? –

+0

오 이런 작품입니다! 고맙습니다. 설명해 주시면 앞으로 어떻게 할 수 있는지 알게 되길 바랍니다. –

+0

@ jt0dd 어느 것입니까? 첫 번째 또는 두 번째 .. 나는 이미 두 번째 것을 설명했다고 생각한다. 당신이 이해하지 못했던 부분을 말해주십시오. –

0

올바른 줄의 형식이 "[a-z]*", 인 파일에서 오류를 찾으려고합니다. 그것이 정규 표현식에서 어떻게하는지 말할 수는 없지만 나는이 목표를 달성하는 방법을 말할 수있다. 나는 몇 단계 ++ 메모장을 사용합니다 :

  1. Ctrl 키 + F 옵션 "북마크 라인"을 확인하고 패턴 "[a-z]*", 검색, 마크에 찾기에서 변경 탭을 선택합니다.
  2. 북마크 된 모든 줄이 북마크로 바뀌면 (검색> 북마크> 역 북마크 메뉴)
  3. 북마크 된 모든 행 (검색> 북마크> 북마크 된 행 복사 메뉴)을 복사하여 다른 빈 파일 (Ctrl + V)
+0

이것은 저장 이후 간접적으로 굉장합니다. 내 * ss 지금 당장. 나는 아무도 "정규식에서이 캡처 그룹"을하는 방법을 알고있는 것 같습니다 너무 놀랍습니다! –

관련 문제