정규표현식의 패턴



프로그램을 하다보면, 정규표현식(정규식)을 사용해야 할 경우가 종종 발생하고는 합니다.


예를들자면, 회원가입시 이메일 주소가 올바른 형태인지 검사한다던지  긴 문자열 중에서 특정한 부분만을 뽑아낸다던지...


이런 상황에서 사용을 하게 되지요.


정규표현식 이라 함은  말그대로 문자열 내의 특정한 규칙을 의미하는 말입니다.  이를 패턴이라고 하기도 하지요.


다음은 정규표현식에서 사용하는 패턴에 사용되는 기호들 입니다.



표현식

 설명 

 ^

 문자열의 시작

 문자열의 종료

 .

 임의의 한 문자 (문자의 종류 가리지 않음)

 단, \ 는 넣을 수 없음

 *

 앞 문자가 없을 수도 무한정 많을 수도 있음

 앞 문자가 하나 이상

 앞 문자가 없거나 하나있음

 []

 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다.

 {}

 횟수 또는 범위를 나타낸다.

 ()

 소괄호 안의 문자를 하나의 문자로 인식 

 |

 패턴 안에서 or 연산을 수행할 때 사용

 \s

 공백 문자

 \S

 공백 문자가 아닌 나머지 문자

 \w

 알파벳이나 숫자

\W 

 알파벳이나 숫자를 제외한 문자

\d 

 숫자 [0-9]와 동일

\D 

 숫자를 제외한 모든 문자

 정규표현식 역슬래시(\)는 확장 문자
 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미

(?i) 

 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음


위의 기호들을 이용해서 정규표현식의 패턴을 만들어 내는데요.




다음은 자주쓰이는 패턴들 입니다.




표현식

 설명 

 ^[0-9]*$

 숫자만

^[a-zA-Z]*$

 영문자만

 ^[가-힣]*$

 한글만

 ^[a-zA-Z0-9]*$

 영어와 한글만

^[a-zA-Z0-9]+@[a-zA-Z0-9]+$

 이메일 주소 형태인지

^01(?:0|1|[6-9])-(?:\d{3}\d{4})-\d{4}$

 휴대폰번호 검사



위와같은 표현식들을 각각의 언어에 맞추어 검사 또는 치환/추출 을 하실 수 있습니다


PHP 의 경우 preg_match() 함수를 이용해서 패턴에 일치하는 구문이 있는지 확인할 수 있겠지요..


다음은  특정한 문자열에서 정규식에 해당하는 부분이 있는지 확인하는 예제입니다.


<?php
// 패턴 구분자 뒤의 "i"는 대소문자를 구별하지 않게 합니다.
if (preg_match("/php/i""PHP is the web scripting language of choice.")) {
    echo 
"발견하였습니다.";
} else {
    echo 
"발견하지 못했습니다.";
}
?>


[php.net 에서 발췌]


이와 같은 형태로 javascript 나 기타 다른언어에서도 두루두루 활용할 수 있습니다.


오늘은.. 간단한 정규표현식 패턴에 대해서 적어보았습니다.



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

ORA-12514: TNS 리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함

오라클이 비정상적으로 종료되었을 경우 또는 다른 이유에 의해서 리스너가 SID 를 찾지 못하는 에러입니다.


해당 에러가 발생했을 경우 다음의 테스트를 우선 진행 합니다.



1. 리스너 점검


   - lsnrctl service  명령으로 현재 리스너 서비스가 정상인지 확인

   - lsnrctl status 명령으로 현재 리스너 서비스 상태 확인



2. 설정파일 점검


   - tnsnames.ora 파일과 listener.ora 파일의 설정을 다시 한번 확인


3. 오라클 및 리스너 재시작


   - 비정상 종료 또는 오라클 수행중 오류가 있다면, 오라클 shutdown 시에 에러메세지가 나올 수 있습니다.



설정상의 오류가 없다면, 위의 과정을 통해서 정상적으로 돌아갈 수 있을것입니다!!!



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


database 백업 및 복원 방법


DB 백업하기

형식) mysqldump -u사용자이름 -p비밀번호 데이터베이스이름 > 파일이름

$ mysqldump -uroot -p12345 mydb > ./backup.sql
☞ SSH(보안텔넷)에서 사용자이름 root, 비밀번호 12345으로 접속하여 mydb의 내용을 backup.sql 파일에 저장함



DB 복원하기

형식) mysql -u사용자아이디 -p비밀번호 데이터베이스이름 < 파일이름

$ mysql -uroot -p12345 mydb < ./backup.sql
☞ backup.sql의 내용을 mydb에 복원함


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

파일명이 깨진파일 지우기




리눅스 OS 에서 가끔 다운로드 받은 파일이나 , 특문등에 의해서 잘못생성되어진 파일들이 생길때가 있습니다.

이때 rm 명령으로 지우기가 난감하지요?


그럴땐 파일의 고유 ID 값을 이용하여 지울 수 있는 방법이 있습니다.


[root@test]# ls -li
합계 0
4532 -rw-r--r--. 1 root root 0 2015-09-23 03:57 2015.0922.txt
4531 -rw-r--r--. 1 root root 0 2015-09-23 03:53 ?ㄶ.txt



위처럼 ls 명령어의 -i옵션으로 파일의 고유 ID 값을 확인합니다. (맨앞 숫자)


[root@test]# find . -inum 4531 -exec rm -f {} ₩;


그다음 find 명령어를 통해 고유숫자 값을 입력하여 삭제합니다.


[root@test]# ls -li
합계 0
4532 -rw-r--r--. 1 root root 0 2015-09-23 03:57 2015.0922.txt



쨘~~ 파일명 깨진 파일 삭제된 것을 확인 할 수 있습니다.

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

생성된 테이블의 CREATE TABLE 구문 얻기



mysql 에서 이미 생성되어져 있는 테이블(table) 에 대한 create table 구문을 얻어내는 방법입니다.



구문 : SHOW CREATE TABLE tbl_name



샘플)



mysql> SHOW CREATE TABLE t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `s` char(60) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1





블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,