쉼표 ','또는 세미콜론 ';'을 제외한 모든 문자와 일치하는 정규식은 무엇입니까?


344

정의 된 특정 문자 또는 문자 세트를 제외한 모든 문자와 일치하는 정규식을 정의 할 수 있습니까?

기본적으로 문자열을 쉼표 (,) 또는 세미콜론 (;)으로 나누고 싶었습니다. 그래서 나는 쉼표 또는 세미콜론을 만날 때까지 모든 것과 일치하는 정규식으로 그것을 생각하고있었습니다.

답변:


473
[^,;]+         

사용중인 정규식 구현을 지정하지 않았습니다. 그들 대부분 Split은 구분 기호를 가져 와서 나누는 방법을 가지고 있습니다. 이 ^클래스를 "정상" 문자 클래스 없이 사용할 수 있습니다 .

[,;]+

10
그리고이 질문은 인접한 구분 기호가 허용되는지 여부를 지정하지 않으므로 후행 '+'는 약간 모호합니다.
Jonathan Leffler

단지 semicolon-- 종료되지 않은 정규 표현식에 대한 오류를 얻는 것은 파일의 끝을 충족
Jaswinder

나는 세미콜론과 쉼표를 피하고 싶은 비슷한 요구 사항이있었습니다. 많은 시도했지만 아래 정규식은 const regexDomain = / ^ (? : [A-Za-z0-9] (?: [A-Za-z0-9-] {0,61} [A-Za-z0-9])? \.) + [A-Za-z0-9] [A-Za-z0-9-] { 0,61} [A-Za-z0-9] / g; 글쎄, 내가 사용하면 유효성을 검사하고; 사이에 있지만 vliadate의 끝에 실패합니다.
Harry

86

문자 클래스를 사용하십시오. 캐럿으로 시작하는 문자 클래스는 클래스에없는 것과 일치합니다.

[^,;]


나는 세미콜론과 쉼표를 피하고 싶은 비슷한 요구 사항이있었습니다. 많은 시도했지만 아래 정규식은 const regexDomain = / ^ (? : [A-Za-z0-9] (?: [A-Za-z0-9-] {0,61} [A-Za-z0-9])? \.) + [A-Za-z0-9] [A-Za-z0-9-] { 0,61} [A-Za-z0-9] / g; 글쎄, 내가 사용하면 유효성을 검사하고; 사이에 있지만 vliadate의 끝에 실패합니다.
Harry


2

이것을 사용하십시오 :

([^,;]*[,;])*

5
필드 구분 기호가 아닌 필드 구분 기호로 쉼표 또는 세미콜론이 필요합니다. 차이는 '라인'(또는 다른 스캔 된 레코드 구조)의 끝에서 중요합니다. 일반적으로 마지막 필드 다음에 쉼표 나 세미콜론을 사용하지 않으려 고합니다. 정규식 엔진이 충분히 강력하면 ' (?:([^,;]*)(?:[^,;]|$))'(비 캡슐 괄호가있는 PCRE)를 사용할 수 있습니다 . 필드 뒤 또는 쉼표 뒤에 쉼표 또는 세미콜론을 사용하면 작업이 향상됩니다. 빈 필드가 허용되는지 여부도 고려하십시오.
Jonathan Leffler

1
마지막으로 캡처에서 실제로 리턴되는 항목에 대해 걱정해야합니다. 분리 기호를 실제로 포함하고 싶습니까? 한 행에 10 개의 필드가 있으면 캡처 표기법으로 리턴되는 필드 수는 몇 개입니까?
Jonathan Leffler

1
당신은 그 모든 것에 대해 옳지 만 내 대답에서 그 일을 콘서트하지 않은 이유는 질문자에게 RegEx의 언어 / 라이브러리가 무엇인지 묻지 않기 때문입니다. "GREP"을 사용 중일 수 있습니다. 어쨌든, 나는 그 의견을 추가하여 그를 위해 일을 정리해 주셔서 감사합니다. : D
NawaMan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.