모든 프로그래머가 정규 표현식을 배우는 것이 필수입니까? [닫은]


82

나는 프로그래밍에 익숙하지 않으며, 인터뷰에서 정규 표현식에 대한 질문을 받았습니다. 말할 수 없다고 말할 필요도 없습니다. 정규식을 배워야하는지 궁금합니다. 모든 분야의 모든 프로그래머에게 필수품입니까? 아니면 특정 분야의 프로그래밍에 필수입니까?

관련 질문 :


55
나는 그들이 무엇인지, 언제 사용하는지, 구글 문법을 어떻게 사용하는지 알고 있습니다. 어깨를 으
Tyanna

35
모든 고급 사용자에게 필수입니다. 또한 생산성을 높이려면 프로그래머가 고급 사용자 여야합니다.
SK-logic

8
왜 배우고 싶지 않습니까? 당신은 이미 알고있는 것으로부터 이익을 얻을 수있는 적어도 하나의 상황에 직면했습니다. 미래에 비슷한 상황에 처하게 될 이유가 있지 않습니까?
FishBasketGordo

23
텍스트로 작동하는
Steve Jackson

답변:


113

정규 표현식은 매우 많은 언어에서 사용할 수있는 매우 편리한 도구로 대부분의 개발자가 조만간 배울 수 있습니다.

면접관에게는 면담 중에 경험을 조사 할 수있는 좋은 방법입니다. 이해하지 못하는 수년간의 경험을 주장하는 사람을 인터뷰하는 경우 더 자세히 조사해야합니다.


4
나는 경험 많은 개발자에게 좋은 질문이라는 데 동의합니다. 그러나 실질적인 프로그래밍 경험이없는 지원자를 실제로 걸러 내고 싶지 않다면 실무 경험이없는 새로운 졸업생에게 요청하는 것은 다소 불공평 할 수 있습니다.
SK-logic

2
@ SK-logic : 학교에 따라 다릅니다. 우리 모두는 정규식을 꽤 많이 사용하는 2 학년에 필수 과정을 가졌습니다 (나는 그것이 그들에게 매료되어 있음을 인정합니다). 그리고 몇 가지 상급 과정이 다시 강렬 해지지는 않았지만 다시 등장했습니다.
FrustratedWithFormsDesigner

위의 의견에 동의-나는 학교 밖에서 새로 온 사람이 반드시 정규 표현을 알기를 기대하지 않습니다. 그러나 나는 여전히 물을 수 있습니다.
ptyx

13
저는 수학자이므로 컴퓨터 과학에 대한 공식적인 배경 지식은 없지만 문법, 파서, 오토마타 등을 배제하면서 정규 과정은 실제로 대학 과정에서 가르쳐 졌다고 생각했을 것입니다. 실제로 대학을 졸업 한 사람은 CS 연구가없는 숙련 된 프로그래머에 대한 더 나은 지식을 갖기를 기대했습니다. :-/
Andrea

8
@Andrea, 내가 대학에있을 때 (컴퓨터 과학 학사) 정규식은 문법과 오토마타에 대해 배울 때 실제로 다루어졌습니다. 그러나 적용 대상이 아닌 공식적인 개념 일뿐입니다. 우리는 POSIX 또는 Perl 호환 정규 표현식 구문이나 코딩에서 그것들을 사용하는 방법을 배우지 못했습니다. 우리는 유한 상태 오토 마톤의 상태 다이어그램을 그리고 정규 표현식 등으로 쓰는 방법을 배웠습니다. 그리스 문자가 grep과 텍스트 파일이 아닌 관련되었습니다.
Adam Jaskiewicz

54

정규식은 도구입니다. 매우 유용한 도구이므로 많은 사람들이이 도구를 사용하는 방법을 배우기로 선택합니다. 그러나이 특정 도구를 사용하는 방법을 배우기위한 "요구 사항"은 없습니다. 다른 것을 배우기위한 "요구 사항"이 있습니다.


19
부울 논리를 이해하는 것이 유용하지만 꼭 필요한 것은 아니라는 것은 사실입니다.
Oded

1
@Oded : 나는 내 과정에서 가르치는 부울 논리에 대한 사용을 찾지 못했습니다.
DeadMG

16
@DeadMG, 나는 변환과 같이 항상 부울 논리를 사용합니다 : if (!(foo && bar))=> if (!foo || !bar). 어쩌면 당신은 그것을 사용하고 깨닫지 못했거나 올바른 자료를 배우지 않았을 것입니다.
zzzzBov

7
버전 관리처럼? 아니면 소프트웨어 테스트?
Konrad Rudolph

2
@ruakh-나는 그들이 매우 유용하다는 데 동의합니다. 나는 항상 그들 자신을 사용합니다. 모든 프로그래머 경력의 어느 시점에서 정규 표현식을 사용하는 방법을 배워야 한다고 생각합니다 . 그러나 질문은 그 질문을하지 않았다.
eykanal

33

예를 들어 게임 프로그래머 나 LHC의 프로그래머가 정규 표현을 배운 적이 없다면 놀라지 않을 것입니다. 심지어 게임 프로그래머에게 SQL을 모르는 것에 대한 패스를 줄 수도 있습니다.

그러나 어떤 종류의 정보 시스템에서 일하고 있고 정규 표현식을 모르는 경우 스스로 장애를 겪고 있습니다.

반대로, 표준 IS 프로그래머가 게임 프로그래머가 할 수있는 행렬 수학을 알 것으로는 기대하지 않습니다. 프로그래머에는 뚜렷한 분야가 있지만 우리는 반드시 "정보 시스템"에 속해야합니다.


1
LHC의 프로그래머는 정규식을 사용하여 센서에서 생성 된 데이터 파일을 검색 할 수 있습니다. 게임 프로그래머는 정규식을 사용하여 게임에서 생성 된 로그 파일을 검색 할 수 있습니다. 그들은 그럴 필요는 없지만 아마도 그러한 작업을 훨씬 쉽게 할 수 있습니다.
FrustratedWithFormsDesigner

1
동의하지만, 게임 프로그래머 입장에서 인터뷰를한다면 정규 표현이 무엇인지 모르는 사람을 고용 할 것입니다. 정규식이 무엇인지 모르는 전통적인 비즈니스 프로그래밍 역할을하는 사람을 고용했다면 아마도 고용되지 않을 것입니다.
Jonathan Rich

그것은 공평합니다.
FrustratedWithFormsDesigner

7
입자 물리학 자들은 대부분 유닉스와 비슷한 환경에서 일하지만, 그 공동체에서 컴퓨터와 관련된 다른 모든 것들과 마찬가지로 대부분의 기술은 구전 전통에 의해 전달됩니다. 정규 표현식의 정교함 수준은 다양합니다. 그러나 우리는 정규 표현식으로 데이터 를 검색하지 않습니다 . 너무 많으며 텍스트 형식이 아닙니다. 우리는 다른 모든 사람들과 마찬가지로 로그와 임시 DB, 코드 및 절반 정도의 문서를 검색합니다.
dmckee

1
@FrustratedWithFormsDesigner, 나는 정규식을 모르는 게임 프로 그머를 고용하지 않을 것입니다. 프로그래밍은 필드에 관계없이 본질적으로 정보 집약적 입니다 . 어떤 분야에서든 상관없이 소스 코드, 정규식 지원 텍스트 편집기 및 로그 파일이 있습니다. 정규식없이 당신은 것입니다 (당신이 제공되는 게임에서 정규 표현식의 한 줄을 쓸 필요가없는 경우에도) 특정 작업을 수행하기에 훨씬 적은 효율적. 게임 프로그래머에게는 정규식이 필요하다고 말하는 것이 아닙니다 . 나는 그것을 모르는 사람을 고용하지 않을 것이라고 말하고 있습니다.
Ben Lee

22

정규 표현식은 텍스트에서 패턴을 일치시키는 방법을 표현하는 매우 간결한 방법입니다.

텍스트에서 데이터를 구문 분석 및 추출하거나 일부 텍스트가 특정 패턴과 일치하는지 확인해야하는 요구 사항은 프로그래밍에서 매우 자주 발생하므로 이에 대해 배우고 이해하는 것이 중요합니다.

그들은 당신의 도구 상자에있는 좋은 도구이며 숙련 된 프로그래머가 사용법을 알기를 기대합니다.

정규식에 대해 배울 수있는 가장 좋은 자료 중 하나는 Jeffery Friedl의 책인 Mastering Regular Expressions 입니다. 다소 고급이므로 경험이 많을 때 실제로 읽을 수도 있습니다.

regular-expressions.info 에서 자습서 를 시작할 수 있습니다 .


2
이것은 나에게 미각의 문제이다. 나는 정말로 그들에게 필요가 없었습니다. 나는 몇 가지 프로젝트에 그것들을 사용했기 때문에 그들이 어떻게 작동하는지 알지만 나는 쉽게 필요로 할 수 있었고 그들이 필요하다고 느낀 것보다 더 자주 오용을 보았습니다. 패턴을 단순하게하기 위해서는 문자열 조작을 복잡하게하는 것도 좋을 것입니다. 파서 작업에 익숙해지면 적어도 (e) BNF를 사용하는 것이 더 빠릅니다.
Rune FS

15

여기에있는 대부분의 답변과 달리 정규 표현식에 대한 지식이 생산적인 프로그래머가되는 데 필요한 기술이라고 생각하지 않습니다. 후보자들과의 위치를 ​​인터뷰 할 때 정규 능력을 스스로 발휘해야한다는 생각이 든다면 더 깊이 파고들 것입니다. 왜? 그들은 올바른 망치를 좋아하기 때문에 종종 장소에서 사용되지만 종종 필요한 것은 스크류 드라이버였습니다. HTML과 정규 표현식을 검색하면 정규 표현식이 적합하지 않은 몇 가지 질문과 몇 가지 이유가 있습니다.

인터뷰 대상자를 고용하기 위해 옹호하기 전에 적절한 OOD를 수행 할 수있는 능력이 필요합니다. 그리고 실제로 당신이 정규식을 알고 있지만 사용 된 프레임 워크에 대한 분석, 디자인 및 지식과 같은 영역이 부족한보다 생산적인 프로그래머가 될 수 있다고 생각하는 사람은 없다고 생각합니다.

물론 그들은 편리하지만 전문 개발자로서 20 년 이상 동안 코드에서 20 번 미만을 사용했다고 생각합니다 (그리고 심지어 몇 개의 펄 스크립트를 코딩했습니다). 그래도 교체하십시오.


정규 표현식을 모르는 프로그래머는 정규 표현식이 아주 잘 작동 할 때 종종 WTF를 많이 생성합니다. 정규식 만 아는 프로그래머는 정규식을 사용하여 비정규 언어 (예 : HTML)를 처리하려고하는 작지만 대량으로 잘못된 WTF 더미를 생성하는 경우가 많습니다.
케빈 클라인

14

작업중인 도메인에 관계없이 정규식은 대부분의 프로그래밍 언어가 일반 텍스트로 작성되므로 알아두면 유용한 도구입니다. 따라서 정규식은 소스 코드를 조작하고 리팩터링하는 좋은 방법이며 많은 텍스트 편집기에 내장되어 있습니다. 정규 표현식이 훨씬 빠르고 정확하게 변경을 수행 할 때 수많은 프로그래머가 소스 파일을 반복적으로 변경하는 것을 보았습니다.

이것이 Pragmatic Programmer의 3 장에서 "프로그래밍의 기본 원재료"인 평문에 대해 이야기하고 있습니다.


왜 리팩토링을 지원하는 아이디어를 사용하지 않습니까?
NimChimpsky

2
이 게시물에서 질문을 한 경우 확인 표시를했을 것입니다. 이것이 정규식을 모르는 사람을 고용하지 않는 가장 중요한 이유입니다. 이 도구를 사용하는 단일 코드 줄을 작성할 필요가없는 경우에도 강력한 코드 편집로그 검색 도구입니다. 모르는 사람은 특정 일상 업무에서 효율성이 떨어질 것입니다.
Ben Lee

10

Jeff Atwood는 정규 표현식에 대한 훌륭한 블로그를 작성했습니다 . 놀라운 인용문이 있습니다.

Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems. [Jamie Zawinski]

체크 아웃하려는 스택 오버플 로 좋은 질문에 대한 훌륭한 답변 도 있습니다.

당신은 그것에 대해 확실히 알아야합니다. 정규식은 배우기 쉽지만 마스터하기는 어렵습니다. 사용을 시작하기 위해 모든 것을 배울 필요는 없습니다. 그것에 대해 현명하게 행동하십시오.

 

tl; dr

기술 사용시기를 올바르게 결정할 수 있도록 기술에 대해 알아야합니다.


8

정규식 라이브러리를 사용할 수없는 임베디드 코드베이스에서 작업합니다. 특정 작업에는 275 줄의 코드가 필요했으며 테스터와 개발자 사이의 모든 문제를 디버그하는 데 약 2 주가 걸렸습니다. 나중에 자바 스크립트 유틸리티의 일부와 동일한 작업을 수행하는 함수를 작성했습니다. 정규식을 사용 하는 것과 동일한 작업은 10 줄의 코드를 사용했으며 약 15 분 안에 완벽하게 작동했습니다.

정규식 이 필요 하십니까 ? 기술적으로는 아니지만 효율적인 도구를 의도적으로 무지한 것은 어리석은 일입니다.


6

다른 답변을 인용하려면 :

정규 표현식은 텍스트에서 패턴을 일치시키는 방법을 표현하는 매우 간결한 방법입니다.

따라서 이것이 업무의 중요한 부분이라면 개발중인 시스템을 설계하는 더 좋은 방법이있을 것입니다. 많은 텍스트가 해당 지역에 고유 한 도메인이 아닌 한 (예 : 생물 정보학).

저는 3 개의 다른 엔터프라이즈 시스템 (10 년 동안 3 개의 다른 회사)에서 근무했으며 5 회 미만으로 작성했으며 기본 전자 우편 검사기를 두 번 복사하여 붙여 넣는 작업이 포함됩니다.


2
많은 텍스트는 항상 도메인마다 다릅니다. 당신은 결국 프로그래머 입니다. 소스 코드 형식의 텍스트가 도메인입니다. 정규 표현식으로 텍스트를 효율적으로 조작하면보다 효율적인 프로그래머가됩니다.
Quancle

2
말이 안되는 @quanticle. 실제로 정규식으로 소스 코드를 조작합니까? 그것은 절대 악몽처럼 들립니다. 정규식은 코드의 일부이며 코드는 도메인 별 데이터와 상호 작용합니다.
NimChimpsky

3
정규식으로 소스 코드를 조작합니다. 많은 양의 코드를 직접 리팩토링하는 것은 지루하고 오류가 발생하기 쉽습니다. 정규식 찾기 및 바꾸기를 지원하는 편집기 (힌트 : 거의 모든 편집기가 regexp 찾기 및 바꾸기를 지원함)를 사용하면 리팩토링이 훨씬 쉬워집니다.
Quancle

3
@ 덩크 (Dunk)는 그것이 프로젝트 수명 동안 큰 효율 이득이라고 말하는 것이 아니라 오히려 작은 기간 동안 큰 이득이 될 수 있다고 말하고있다. 또한 수십 개의 파일에 수백, 심지어 수천 개의 변경 사항이있는 리팩토링을 수행했습니다. 프로젝트 기간 동안 절약 된 시간은 중요하지 않지만, 동일한 변경 작업을 수동으로 수행하는 데 몇 시간 또는 며칠이 걸리지 않았습니다. 최신 IDE는 정규식을 작성하지 않고도이 중 일부를 수행 할 수 있지만 때로는 그렇지 않습니다 (예 : 일반적인 어설 션 패턴을 재배치).
jmoreno

2
@NimChimpsky Regexps는 모든 곳에서 작동합니다. IDE 및 리팩토링 도구는 특정 언어에서만 작동합니다. 예를 들어 리팩토링 도구를 사용하면 모든 템플릿을 살펴보고 전화 번호 ( site.google.com/site/steveyegge2/… ) 와 같은 문자열을 찾거나 삭제할 수 있습니까?
Quancle

4

정규식은 매우 유용한 언어 간, 플랫폼 간 처리 도구로 생각할 수 있습니다. 내 코드에서 정규식을 사용할 수 있고 편집기에서 정규식을 사용할 수 있으며 명령 줄에서 정규식을 사용할 수 있습니다!

그것은 단지 당신이 필요하거나 배우는 것이 아닙니다. 더 좋아

와! 나는 정규식을 좋아한다!


4

훌륭한 프로그래머가되기 위해 작은 정규 표현식을 모두 알 필요는 없습니다. 특히 다른 구현 및 프로그래밍 언어에 따라 약간 씩 다르기 때문에 특히 좋습니다. 당신이 알아야 할 것은

  • 정규식과 정규식이란 무엇입니까?
  • 어떤 종류의 일을 효율적으로 하는가 (일반 언어 파싱)
  • 어떤 종류의 비효율적 인 것 (역 참조를 사용하여 중첩 된 물건을 파싱)
  • 구문을 읽거나 쓸 때마다 구문에 대한 정보를 얻을 수있는 곳.

어쨌든, 처음부터 배우는 데 너무 많은 노력이 들지 않아도 걱정할 필요가 없습니다. 가장 간단한 사업자 ( ., *, |, (), 등)은 거의 보편적으로 존재하고 이동 길을!


나는 이것이 정말로 좋은 지적이라고 생각합니다. 일부 RE 엔진의 역 참조 및 기타 고급 기능을 사용하는 방법을 아는 것은 적당히 유용합니다. 많은 경우 / 대부분의 경우 RE 사용을 약간의 논리와 결합하면 읽기 쉽고 유지 관리하기가 더 쉽습니다.
Mark Bessey 2013

3

이미 언급했듯이 Regex는 매우 유용한 도구 IMHO 도구입니다.

이 예제를 고려하십시오.

//fomat number using string.replace and regex in javascript
function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
} 

예를 들어이 1000000.00과 같은 숫자를 "1,000,000.00"으로 변환하는 한 줄만

다른 방법을 사용하면 훨씬 더 복잡합니다


2
그리고 이것은 복잡하지 않습니까? 이것은 표준 정규 표현식 세트에없는 몇 가지 특수 기능을 사용합니다. 간단한 길이와 채우기는이 작업에 적합합니다.
ratchet freak

2

필수는 아닙니다. 당신은 단지 그들의 존재와 그것들을 언제 사용해야하는지 알아야합니다. Google과 온라인 도구를 사용하면 구문 관련 정보를 쉽게 찾아서 얻을 수 있습니다.


2

정규식을 배우는 것이 좋습니다. 직장에서 프로그래머를 고용 할 때 정규 표현식을 모르는 후보자는 일반적으로 신속하게 폐기됩니다. 정규 표현식을 반드시 알아야하기 때문이 아니라 프로그래밍에 대한 이해 수준과 프로그래밍 중독 수준을 나타내는 훌륭한 지표이기 때문입니다.

실제 프로그래머는 정규 표현식을 알고 있습니다.

그러나 정규식이 서버 측과 클라이언트 측 모두에서 많이 접하게되는 웹 프로그래밍에 주로 관여하기 때문에 이것은 약간 편향적입니다. 식기 세척기에 내장 된 시스템의 조립 프로그래머라면 정규 표현식을 전혀 보지 못할 것입니다. 그러나 정규 표현식 (검색 및 바꾸기, 파일 검색, 여러 파일 검색 등)을 알면 대부분 개발 환경을 더 잘 사용할 수 있기 때문에 여전히 유용 할 것입니다.

또한, 알고 있으면 동료 프로그래머가 쉽게 알아볼 수 있습니다.


또한 많은 방언이 있기 때문에 처음부터 마음으로 완전한 사양을 배우는 것은 쓸데없는 일입니다. 대신, 기본 학습에 중점을 두십시오. (1) 몇 가지 간단한 정규 표현식을 작성하고의 의미를 배우십시오. * + {} [] () 및-및 몇 가지 기본 클래스. (2) 당신의 손에 주어진 사양으로, 당신이 만나는 정규 표현식에서 무슨 일이 일어나고 있는지 이해하려고 노력하십시오.
Aron Cederholm 2019

yr web dev에서 정규 표현식을 사용하는 것은 무엇입니까? 내가하는 일과 10 년 동안 5 번처럼 사용했습니다.
NimChimpsky

초보자의 경우 : 사용자 입력 구문 분석 또는 유효성 검증 (예 : 이메일, 우편 번호 / 우편 번호, 사용자 검색 양식). 또한 여러 언어 / 로케일의 사용자 정의 및 변수 변환 문자열을위한 I18n 및 l10n 목적으로도 사용됩니다. 그리고 그들은 약간의 오류 감지 및 많은 오류 처리에 도움이되었습니다. 그리고 위키 / 포럼 마크 업에 대한 CMS / 블로그 / 코멘트 세계에서. 외부 데이터 (사용자 입력, 스크랩 된 페이지, 동기화 된 리소스 등)의 경우 컨텐츠 / 링크 / 무엇이든 구문 분석, 처리 및 재 작성. 플러스 통계의 목적과 loggings의 모든 많은 (브라우저 감지, 리퍼러 정렬, ...)에 대한
아론 Cederholm

그런 정말 무지한 논평 "진짜 프로그래머 ..."에 대해 -1
Dunk

그것은 사용자 입력의 유효성을 검사하는 다소 피상적 인 방법이며 정규 표현식이 100 % 정확하면 전자 메일 유효성 검사가 필요합니다 (이메일 유효성 검사는 유명합니다). 그리고 나는 당신이 정규 표현식을 사용하여 언어들 사이에서 번역하는이 "다국어 / 로케일의 사용자 정의 및 변수 번역 문자열"을 골라 내지 않습니다. 통계 목적-정규 표현식으로 통계를 수행합니까? 정규식으로 링크 / 콘텐츠를 다시 작성하면 코드 냄새가 나는 것 같습니다.
NimChimpsky 2016 년

1

필수입니까? 당신은 당신이 알아야 할 것, 그것들이 존재하고 무엇이며 무엇을 위해 사용되는지 이미 알고 있습니다. 프로그래머로서의 직업은 문제를 해결하는 것입니다. 이제 문제를 해결하기 위해 솔루션에 요소를 포함시키기에 충분합니다. 정규식을 배워야합니까? 물론. 우선 순위는 당신에게 달려 있습니다 ... 매일 사용되는 직업과 결코 사용되지 않는 직업이 있습니다. 간단한 가이드는 발생할 것으로 예상되는 문제와 일치하는 패턴의 양입니다.


1

흠,이 문자열 목록을 쉼표로 구분하여 출력해야합니다. 분리 인수를 취하는 for 루프가 포함 된 함수를 작성하고 계속 함께 추가하십시오 ... 또는 기존의 'join'명령을 사용할 수 있습니다.

각 객체가 가지고있는 몇 가지 속성을 기반 으로이 복잡한 객체로 정렬해야합니다.이 기능을 수행하는 정렬 함수를 작성하는 방법을 상기 시키십시오. 오, 기다려,이 언어가 지원하는 기존 표준 정렬 함수를 사용할 수 있습니다. 사용자 정의 비교기를 작성하는 방법을 배워야하지만 너무 어렵지 않아야합니다. 내 정렬 기능을 유지하는 것보다 낫습니다.

나는 가상 메소드에 대한 아이디어에 약간 무서워하지만, 다른 유형의 항목에 대한 각 목록을 단일 목록으로 줄이는 데 도움이되어야합니다. 그런 다음 각 목록을 다른 방식으로 처리하는 비슷한 문장 6 개를 작성할 필요가 없습니다. 내가 그렇게하면 내 코드가 훨씬 간단하고 깨끗해지기 때문에 열심히 공부하고 그 것들을 배워야한다고 생각합니다.

이 텍스트 파일 에서이 모든 다른 노이즈 사이 에서이 단어와 값 쌍을 추출해야합니다 .50 줄 파서를 작성하여 문자를 하나씩 읽고 문자 중 하나가 내가 시작한 것처럼 보이는 경우 내가이 상태 변수를 설정하고 다르게 파싱하기 시작하는 등 ... 물론 내 경우는 분명히 그렇게 특별한 사람이 없었습니다. 코드를 작성하십시오. 그것은 내가 중고 서점에 읽지 않은 프로그래밍 서적을 가져 가야한다는 것을 상기시켜줍니다.


1

짧은 대답 : 아니요하지만 ... 지식은 힘입니다.

나는 웹 개발자이며 일반적으로 필요한 정규 표현식이 이미 작성되어 있다는 것을 알았습니다. 그러나 나는 복사 및 붙여 넣기에 문제가 있었고 그것이 무엇을하고 있는지 알지 못하여 복사하고 붙여 넣을 위험이 있습니다.

한 가지 예 : 복사하여 붙여 넣은 전자 메일 정규식은 전자 메일 주소 사양에서 허용되는 전자 메일에 기간이나 플러스를 허용하지 않았습니다. 실제로 많은 사람들이 actualemail+sitename@gmail.com과 함께 gmail을 사용하므로 스팸으로 선택하면 'sitename'을 쉽게 필터링 할 수 있습니다.


0

정규식? 흠 ... 때로는 그들을 아는 것이 유용하지만 대부분의 경우 항상 같은 것을 사용합니다. 나는 정규 표현식을 자주 사용했지만 나는 그것에 능숙하다고 말하지 않았다. 나는 그것을 전혀 좋아하지 않으며 정규 표현식보다 알아야 할 것이 더 중요하다고 생각합니다.

그러나 공식 또는 데이터의 유효성 검사에서 매우 유용합니다. 거의 모든 전문 양식이 정규식으로 검증되었다고 생각합니다. 그것을 사용하는 ASP.NET.

그러나 전혀 : 필요할 때 표현하고 저장하십시오. 당신은 그들을 두 번 이상 희망적으로 사용할 것입니다. 그러나 RegEx로 시간을 낭비하지 마십시오!


0

작업중인 지역 / 플랫폼에 따라 다릅니다.

  1. 데스크톱 응용 프로그램의 경우 정규식에 대해 전혀 몰라도 쿨한 삶을 살 수 있습니다. 그러나 Visual Studio에는 정규 표현식 검색 기능이 있지만 누구나 정기적으로 사용하는지 궁금합니다. 나는 생각하지 않습니다 (당신은 검색을 할 수 있기 때문에 정규 표현식을 먼저 수정해야합니다 :)).

  2. 웹 개발자는 정규 표현식을 배워야 할 것입니다. 필요한 코드 스 니펫을 온라인에서 쉽게 찾을 수 있지만 학습에 도움이되므로 쉽게 해결할 수 있습니다.

정규식이 필수 불가결 한 도구 인 문서, 소송, 법률 관련 항목이 있습니다. 당신은 그것을 알아야합니다. 당신이하지 않으면 단순히 직업을 얻지 못할 것입니다.

간단히 말해서 그것이 직업 설명의 일부가 아니라면 그것에 대해 귀찮게하지 마십시오. 배우고 싶다면 재미있게 배우십시오.


0

정규 표현식은 매우 유용한 도구이며 프로그래머가 사용해야 할 상황이 많이 있습니다. 사용하기 위해 마음을 다 배우지 말아야합니다. 참조를 사용하고 작업을 수행하십시오. 정규 표현식을 사용한 10-20-50-100 (프로그래머에 따라 다름) 작업을 수행 한 후에는 모두 마음으로 알 수 있습니다. 그들은 스스로 배우고 있으므로 특별히 배워서는 안됩니다.


0

나는 이것에 대한 많은 답변을 이미 보았지만, 그것들은 모두 프로그래머의 툴박스에서 도구 로서 정규식을 아는 장점에 관한 것 같습니다 .

나는 정규 표현식을 컴퓨터의 작동 방식에 대한 이해를 넓히는 일종의 지식으로 생각하는 것을 훨씬 선호합니다. 누군가가 진정으로 정규 언어가 무엇인지 알고 세 가지 간단한 작업으로 언어를 표현할 수 있다면 단순한 문자열 유효성 검사 도구 이외의 것을 제공한다고 생각합니다.

그들은 일반적으로 모든 종류의 프로그래밍에 유용한 구문 분석을 더 잘 이해하고, 우리가 정기적으로 사용하는 도구 (컴파일러, 편집기, 브라우저 등)가 어떻게 작동하는지 더 잘 이해할 수있게됩니다.

정규 표현식 을 사용하면 얻을 수있는 실질적인 이점 은 물론 막대합니다. 당신이 그들과 함께 "프로그래밍"하지 않더라도-나는 항상 에디터에서 찾기 / 바꾸기를하는 정규 표현식을 사용하고 그들이 얼마나 더 생산적인지 측정합니다.

따라서 필요하지는 않지만 프로그래머가 알아야 할 첫 번째 도구 중 하나라고 생각합니다.


0

Rob Pike 는 그렇게 생각하지 않습니다 .

정규 표현식은 쓰기가 어렵고 쓰기가 어렵고 다른 기술에 비해 비쌀 수 있습니다. 표준 어휘 분석 및 파싱 기술은 작성하기 쉽고, 일반적이며, 적응성이 뛰어나서 정규 표현식을 사용할 이유가 없습니다.

그것을 보는 또 다른 방법은 렉서와 구문 분석이 정적으로 정의 된 패턴과 일치하지만 정규 표현식의 강점은 패턴을 동적으로 표현하는 방법을 제공한다는 것입니다. 텍스트 편집기와 검색 도구는 훌륭하지만 컴파일 타임에 원하는 모든 것을 알고 있으면 정규식은 필요한 것보다 훨씬 일반 성과 유연성을 제공합니다.

모든 텍스트 처리 문제에 대한 만병 통치약으로 정규식을 장려하는 것은 게으르고 공학적인 문제 일뿐만 아니라 전혀 사용하지 않아야하는 사람들의 사용을 강화합니다.

파이크는 물론 장소가 있음을 인정하고 IMHO는 정규 표현식은 매우 강력한 도구입니다. 그들. 그러나 실제 문제는 그것들이 반창고라는 것입니다. :)


0

정규식은 종종 작업에 적합한 도구이며 특히 많은 텍스트 처리를 수행하는 응용 프로그램에서 매우 유용합니다. 그러나 그것들을 외우는 것은 광기입니다. 특수 문자, 앵커, 문자 클래스, 패턴 수정 자, 메타 문자가 모두 포함 된 치트 시트가 벽에 고정되어 있습니다. 사용 방법을 배우고 치트 시트를 가져 오는 데 20 분이 소요됩니다. 다른 모든 것을 추적하십시오. 필요한 것은 정규 표현식을 필요할 때 작성하는 것입니다. 일반적으로 약 6 개월마다 작업에 사용하기에 가장 적합한 도구 인 문제가 발생하는 빈도입니다. Perl, Latex, Emacs 또는 다른 무거운 텍스트 처리 팀에 있지 않는 한.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.