문제

저는 주로 Oracle 데이터베이스에 액세스하는 Java 데스크탑 애플리케이션 분야에서 5년 동안 일해 왔으며 정규식을 사용한 적이 없습니다.이제 Stack Overflow에 들어가서 이에 대한 많은 질문을 봅니다.뭔가를 놓친 것 같은 느낌이 듭니다.

정규식은 무엇을 위해 사용하나요?

추신내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다

도움이 되었습니까?

해결책

Ruby의 예를 살펴보겠습니다.

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

"/\d{3}-\d{4}/"는 정규식이며 보시다시피 문자열에서 일치 항목을 찾는 매우 간결한 방법입니다.

또한 그룹을 사용하면 다음과 같은 정보를 추출할 수 있습니다.

match = /([^@]*)@(.*)/.match("myaddress@domain.com")
name = match[1]
domain = match[2]

여기서 정규식의 괄호는 캡처 그룹을 표시하므로 일치하는 데이터가 무엇인지 정확히 볼 수 있으므로 추가 처리를 수행할 수 있습니다.

이건 빙산의 일각일뿐...텍스트를 정말 쉽게 처리할 수 있도록 정규 표현식으로 수행할 수 있는 다양한 작업이 많이 있습니다.

다른 팁

정규식(또는 Regex)은 문자열의 패턴 일치에 사용됩니다.따라서 특정 패턴을 따르기 때문에 텍스트에서 모든 이메일 주소를 추출할 수 있습니다.

어떤 경우에는 정규 표현식이 슬래시로 묶여 있고 두 번째 슬래시 뒤에 대소문자 구분과 같은 옵션이 배치됩니다.여기 좋은 것이 있습니다 :)

/(bb|[^b]{2})/i

말로 하면 "2 be or not 2 be"로 읽을 수 있습니다.

첫 번째 부분은 (브래킷)이고 파이프에 의해 분리됩니다 | 또는 진술과 동일시하는 문자 (a | b)는 "a"또는 "b"와 일치합니다.파이프 영역의 전반부는 "bb"와 일치합니다.후반부의 이름은 모르지만 대괄호입니다. ~ 아니다 "b", 이것이 바로 거기에 지붕 기호 물건(기술 용어)이 있는 이유입니다.구불구불한 괄호는 그 앞에 있는 항목의 수와 일치합니다. 이 경우에는 "b"가 아닌 두 문자입니다.

두 번째 / 뒤에는 "i"가 붙어 있어 대소문자를 구분하지 않습니다.시작 슬래시와 끝 슬래시 사용은 환경에 따라 다르며, 사용하는 경우도 있고 사용하지 않는 경우도 있습니다.

이에 대해 유용하다고 생각되는 두 개의 링크는 다음과 같습니다.

  1. 정규식.정보
  2. Wikipedia - 정규식

가장 멋진 정규식 항상:

/^1?$|^(11+?)\1+$/

숫자가 소수인지 테스트합니다.그리고 그것은 작동합니다 !!

참고:작동시키려면 약간의 설정이 필요합니다.테스트하려는 숫자는 "1"첫 번째, 그 다음에 문자열이 일치하는지 테스트하기 위해 표현식을 적용할 수 있습니다. ~ 아니다 "라는 소수를 포함합니다.1"에스:

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

상세하고 매우 접근하기 쉬운 설명이 있습니다. Avinash Meetoo의 블로그.

정규식에 대해 배우고 싶다면 추천합니다 정규식 익히기.매우 기본적인 개념부터 다양한 엔진이 그 아래에서 어떻게 작동하는지에 대해 이야기하는 것까지 진행됩니다.마지막 4개 장은 또한 PHP, .Net, Perl 및 Java 각각에 대한 전용 장을 제공합니다.그로부터 많은 것을 배웠고, 아직도 참고자료로 활용하고 있습니다.

방금 정규식을 시작했다면 The Regex Coach와 같은 도구를 진심으로 추천합니다.

http://www.weitz.de/regex-coach/

RegexBuddy에 대해서도 좋은 소식을 들었습니다.

http://www.regexbuddy.com/

아시다시피 Oracle에는 이제 정규 표현식이 있습니다. http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html.몇 가지 쿼리에서 새로운 기능을 사용해 보았지만 다른 상황에서만큼 유용하지는 않았습니다.그 이유는 정규 표현식이 비정형 데이터에 묻혀 있는 정형 데이터를 찾는 데 가장 적합하기 때문이라고 생각합니다.

예를 들어 정규 표현식을 사용하여 로그 파일에 들어 있는 Oracle 메시지를 찾을 수 있습니다.메시지가 어디에 있는지 아는 것은 불가능하며 메시지의 모양만 알 수 있습니다.따라서 정규식은 해당 문제에 대한 최선의 해결책입니다.관계형 데이터베이스로 작업할 때 데이터는 일반적으로 미리 구조화되어 있으므로 해당 컨텍스트에서는 정규식이 빛나지 않습니다.

정규식(regex 또는 줄여서 regexp)은 검색 패턴을 설명하기 위한 특수 텍스트 문자열입니다.정규식을 스테로이드의 와일드카드로 생각할 수 있습니다.아마도 다음과 같은 와일드카드 표기법에 익숙할 것입니다. *.txt 파일 관리자에서 모든 텍스트 파일을 찾으려면정규 표현식은 다음과 같습니다. .*\.txt$.

정규식을 위한 훌륭한 리소스: http://www.regular-expressions.info

이러한 RE는 Visual Studio 및 C++에만 적용되지만 때로는 도움이 되는 경우도 있습니다.

기본 매개변수가 아닌 매개변수가 전달된 "routineName"을 모두 찾습니다.

루틴이름\(:a+\)

반대로 기본값만 사용하여 "routineName"을 모두 찾으려면 다음을 수행하세요. 루틴이름\(\)

디버그 빌드에서 활성화(또는 비활성화)된 코드를 찾으려면 다음 안내를 따르세요.

\#만약에._디버그*

이렇게 하면 모든 변형이 포착됩니다.ifdef, 정의된 경우, ifndef, ! 정의된 경우

강력한 비밀번호 검증:

이것은 적어도 하나의 대문자, 하나의 소문자 및 하나의 숫자를 포함하여 5~10자의 영숫자 길이로 비밀번호를 검증합니다.

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top