출처 : C.E/Java2013/10/19 09:57

◈ 규표현식 문법

1) ‘.’ 특수문자

임의의 한 문자를 나타낸다.

- ‘.’ 특수문자가 위치한 곳에는 반드시 한 글자가 위치하여야 한다.

- ex ) 패턴 : a.b → 일치하는 문자열 : acb, adb, az

- ex ) 패턴 : ab. → 일치하지 않는 경우 : ab, abcd 

 

2) ‘*’ 특수문자

바로 앞의 문자를 0번 이상 반복한다.

- * 앞에는 한 글자 이상의 단어가 반드시 와야 한다.

- ex ) 패턴 : ab*c → abc, abbc, abbb

- ex ) 패턴 : *ab → 불가능

 

3) ‘+’ 특수문자

바로 앞의 문자를 1번 이상 반복한다.

- + 앞에는 한 글자 이상의 단어가 반드시 와야 한다.

- ex ) 패턴 : a+b → aab, aaab, aaaa

- ex ) 패턴 : +ab → 불가능

 

4) ‘?’ 특수문자

특수문자 바로 앞의 문자가 하나 있거나 없는 것을 의미한다.

- ex ) 패턴 : try? → 일치하는 문자열 : tr, try

패턴 a?c → 일치하는 문자열 : c, ac

 

5) ‘^’ 특수문자

문장의 처음을 나타낸다.

- ex ) 패턴 : ^Hello → 일치하는 문자열 : Hello abc, Hello world 

Hello로 시작하는 문자열

 

6) ‘$’ 특수문자

문장의 끝을 나타낸다.

- ex ) 패턴 : world$ → 일치하는 문자열 : hello world, welcome my world 

world로 끝나는 문자열

 

7) ‘[]’ 특수문자

괄호 안의 문자 중 일치하는 것을 찾고자 할 경우 사용

- ex ) 패턴 [abc] → 일치하는 문자열 : a, b, c, ab, abc 

[a-z] → 소문자가 포함된 모든 문자열

[A-Z] → 대문자가 포함된 모든 문자열

[0-9] → 숫자가 포함된 모든 문자열

^[a-zA-Z0-9] → 숫자가 영문자로 시작되는 모든 문자열

 

8) ‘[]’ 특수문자 안에서의 ‘^’ 특수문자

- []안의 문자와 일치하지 않는 문자열을 포함하고 있는 패턴을 의미한다

- ex ) 패턴 [^abc]de → .de패턴과 동일 (ade, bde, cde 제외)

 

9) ‘{}’ 특수문자

특수문자 앞의 문자나 문자열의 반복되는 개수를 말한다.

- ex ) go{5}ggle → gooooogle

go{3,}ggle → gooogle, goooogle, gooooogle 등 (o가 3개 이상)

go{2,4}ggle → google, gooogle, goooogle (o가 2개이상 4개이하)

 

10) ‘()’ 특수문자

- ()안의 글자들을 하나의 문자로 본다.

- ex ) (hero_){3} → hero_hero_hero_

(hero_)* → null, hero_, hero_hero_ 

 

11) ‘|’ 특수문자

패턴 안에서 OR연산 사용시 사용

- ex ) man|woman → man, woman, manwoman, superman 

 

12) 문자 클래스

- [] 안에서 자주 사용되는 패턴들을 미리 키워드로 정의하여 놓은 것

문자클래스는 PHP에서는 이용되지만 JAVA에서는 이용되지 않음

패턴

문자 클래스

J2SDK 1.4의 예

[a-zA-Z] : 모든 영문자

[[:alpha:]]

\p{Alpha}

[0-9] : 숫자

[[:digit:]]

\p{Digit}

[a-zA-Z0-9] : 영문자와 숫자

[[:alnum:]]

\p{Alnum}

공백

[[:space:]]

\p{Space}



 

javascript 에서 사용 !!!


 

# 매칭문자

\D : 숫자가 아닌 문자

\d : 숫자

\s : 공백문자 [\f\n\r\t\v] 와 같다.)

\S: 공백 문자가 아닌 모든 문자 ( [^\f\n\r\t\v] 와 같다.)

\w : 대소문자와 밑줄을 포함하는 모든 영숫자[A-Z,a-z,0-9], 알파벳, 숫자로 된 문자, 밑줄기호

\W : \w를 제외한것

 

flag - i : 대/소문자 구분 없음

        g : 전역검색

        m : 여러줄 검색

 

정규식 매칭중 () 사용시 괄호로 묶은 패턴은 매칭후 그 부분을 기억하여 결과가 저장되는 배열에 같이 저장된다.

괄호로 묶은 부분만 저장된다.

 

ex1 ) var rgExp = /(^D*[0-9])/

        var str = "This is fun 01 stuff";

        var resultArray = str.match(rgExp);

        document.writeln(resultArray);        ==>  This is fun 0,This is fun 0

        

ex2 ) var rgExp = /(^D*)[0-9]/

        var str = "This is fun 01 stuff";

        var resultArray = str.match(rgExp);

        document.writeln(resultArray);        ==>  This is fun 0,This is fun

 

ex3 ) 숫자에 Comma 추가하기 (출처 : 바로가기 >> )

        function addComma(num) {
                  if(isNaN(num) == true) {
                        return 0;
                  }
                  var reg = /(^[+-]?\d+)(\d{3})/;
                  var strNum = num + '';
                  while(reg.test(strNum)) {
                        strNum = strNum.replace(reg, '$1' + ',' + '$2');
                  }
                  return strNum
           }

        ==> "123456789" -> (123456789 replace) -> "123456,789" -> (123456 replace) -> "123,456,789"

 

 

http://blog.naver.com/witchope/30077428568



  

자바 정규표현식

. : 임의의 한 문자(필수) 
ex) ab. => abc, abd, abe

? : 바로 앞의 문자가 없거나 하나가 있음을 의미 
ex) a?c => ac, abc, bc

* : 바로 앞의 문자가 없거나 하나 이상 반복
ex) ab* => a, ab, abb, abbb

+ : 바로 앞의 문자가 하나이상 반복
ex) ab+ => ab, abb, abb

^ : 문자열의 시작을 의미
ex) ^a => ab, abc, abcd

[^] : ^이후의 괄호안 형식은 제회
ex) ab[^c]+ : abd, abe, [^c] 자체가 한글자를 의미함

$ : 문자열의 끝을 의미
ex) abc$ : ab

[] : []안의 형식 일치
ex) [abc] : a, b, c, ab, ac, bc, abc

{} : {}앞 문자열 반복갯수
ex) ab{3} : ababab
    ab{2,} : ab, abab, ababab, abababab
    ab{1, 2} : ab, abab

() : ()안의 내용을 하나로 묶음
ex) (ab){2} : abab

| : or 연산
ex) (a|b|c) : a, b, c, ab, ac, bc, abc

[a-z] : 소문자
[A-Z] : 대문자
[0-9] : 숫자
[a-zA-Z0-9] : 영문, 숫자 

자바에서 이용할 경우

String의 matchers 또는 Pattern 클래스와 Matchers 클래스 사용

 public static void main(String[] args) {
  String regExpStr = "^a.c$";
  
  String[] strArr = {"abc", "acc", "adc", "aec", "afc", "agc", "ahc", "aiic"};
  
  for(String str : strArr) {
   System.out.println("[" + str + "] : " + str.matches(regExpStr));
  }
  
  // email 형식 정규식
  // 개인적으로 해보니 ^$는 꼭 써줘야 겠음
  String regExpStr2 = "^[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\\.][a-zA-Z0-9]+$";
  
  String emailStr = "babolsk@bbb.com";
  
  Pattern pattern = Pattern.compile(regExpStr2);
  
  Matcher match = pattern.matcher(emailStr);
  
  // 매칭에 맞을 경우 true
  System.out.println("[" + emailStr + "] : " + match.find());
 } 

 




 - http://hji.kr/tc/23 


Posted by 제로스틴
,

※Mac에서 터미널을 사용해서 원격지의 우분투리눅스 pc로 ssh접속할 때 기준이다.

vi 시작과 종료

시작 - vi

종료 - :q

저장하지 않고 종료: q!


※vi를 사용하다가 "길을 잃었다면" ESC 키를 두 번 입력하라. 그럼 다시 방향을 잡아 줄 것이다.


편집모드

vi로 새 파일 만들기 : vi 파일명 or 파일명.확장자 vi foo.txt (리눅스는 파일에 확장자가 없는 것도 파일로 간주한다.)

저장하기 - :w

텍스트 입력모드 들어가기 - :i


커서 이동



 키

 커서 이동방향 

 l 또는 오른쪽 방향키 

오른쪽 한문자 

 h 또는 왼쪽 방향키 

왼쪽 한문자 

 j 또는 아래쪽 방향키 

한 줄 아래로 

 k 또는 위쪽 방향키 

한 줄 위로 

 0 (zero) 

현재 줄 처음으로 

 shift-6 ( ^ ) 

현재 줄 첫번째 공백이 아닌 글자로 

 shift-( $ ) 

현재 줄 마지막으로 

 w (소문자 w) 

다음 단어나 구두점(마침표) 기호 처음으로 

 shift-w

다음 단어 처음으로, 구두점(마침표) 기호 무시 

 b 

이전 단어나 구두점(마침표) 기호 처음으로 

 shift-B 

이전 단어나 구두점(마침표) 기호 처음으로 

 control - f  또는 fn - 방향키 아래쪽 방향키

한 페이지 아래로 

 control - b  또는 fn - 방향키 위쪽 방향키 

한 페이지 위로 

 number-shift-G 

줄 번호로 이동(1G를 입력하면 파일의 첫줄로 이동) 

 shift-G

파일의 마지막 줄로 


기본 편집

실행 취소 - u 

※실제 vi는 한 단계 수준의 실행취소만 지원. vim은 몇 단계까지도 가능하다.


빈줄 추가

 명령어 

 실행 

 o

 현재 줄 아래에 빈 줄 추가 

 O 

 현재 줄 위에 빈 줄 추가 


텍스트 삭제

d명령어는 단순히 텍스트를 삭제만 하는 것이 아니고 텍스트 "자르기"도 수행한다.

d명령어를 사용할 때마다, 삭제된 내용은 붙이기 버퍼(클립보드를 생각하자)에 복사되어 p명령어로 그 내용을 다시 불러와서 커서 앞 또는 뒤로 붙이기를 수행한다.

y 명령어는 d명령과 매우 비슷한 방법으로 텍스트를 자르고 "복사하는 기능을 수행한다.

 명령어

 삭제 내용 

 x

 현재 문자 

 3x 

 현재 문자를 포함한 다음 2개 문자 

 dd 

 현재 줄 

 5dd 

 현재 줄을 포함한 다음 4줄 

 dW 

 현재 커서 위치에서부터 다음 단어 앞까지 

 d$ 

 현재 커서 위치에서부터 현재 줄 끝까지 

 d0 (숫자0) 

 현재 커서 위치부터 현재 줄 맨 앞까지

 d^ 

  현재 커서 위치부터 그 줄의 공백이 아닌 첫 번째 글자까지

 dG

 현재 줄부터 그 파일 끝까지 

 d20G 

 현재 줄부터 파일의 20번째 줄까지 



텍스트 자르기, 복사하기 그리고 붙이기

예> yy입력해서 현재 줄 복사 -> 마지막 줄(G)로 커서 이동 후 p 입력하여 붙이기 실행.

 명령어

 복사 내용 

yy 

 현재 줄 복사

5yy 

 현재 줄을 포함한 다음 4줄

yW 

 현재 커서 위치부터 다음 단어 앞까지 

y$ 

 현재 커서 위치부터 현재 줄 끝까지 

y0 

 현재 커서 위치부터 현재 줄 맨 앞까지 

y^ 

 현재 줄부터 그 파일 끝까지 

yG 

 현재 줄부터 그 파일 끝까지 

y20G 

 현재 줄부터 파일의 20번째 줄까지 

줄 합치기 - J

예> line3 line4 <-- 이렇게아랫줄과 합쳐준다

line3 

line4


검색 및 치환

줄에서 텍스트 검색 - f명령

※예를 들어 fo명령어는 현재 줄에 있는 o 문자를 찾아 이동시킨다. 검색을 수행하고 나서 ; (세미콜론)을 입력하면 반복검색이 가능하다.

n명령어를 사용하면 이전 검색어로 검색을 반복해 준다. (이건 안되는 듯...)

The quick brwon fox jmped over the lazy dog.


파일에서 텍스트 검색

/ 명령어 사용된다.

예 >

/The

/quick brwon

/Line


전체 검색 및 치환

vi는 ex명령어를 사용하여 해당 줄이나 파일 전체에서 검색할 내용을 찾아서 바꾸기 작업(vi에서는 치환으로 불린다)을 수행한다. 파일 전체에서 Line을 line으로 바꾸기 위해 다음과 같은 명령어를 입력해야 한다.

:%s/Line/line/g

:1,9s/Line/line/g

:1,$s/Line/line/g

항목 

뜻 

 : 

콜론 문자는 ex명령어를 실행한다. 

 % 

작업을 수행할 줄 범위를 보여주고 있다. % 기호의 의미는 첫 번째

 줄부터 마지막 줄까지라는 것을 담고 있다. 그렇지 않으면 1, 5와 같이 범위를 지정할 수 있다(여기에서는 현재 5줄까지만 있다). 

또는 1, $를 입력하면 "1번 줄부터 파일의 끝까지"라는 의미로 해석된다. 줄 범위를 지정하지 않으면 현재 라인에만 작업이 수행된다

 s 

 작업을 지정한다. 이 경우에는 치환 작업이다(검색하여 바꾸기) 

 /Line/line/ 

검색 패턴과 바꾸고자 하는 텍스트를 입력한다 

 g 

전체를 의미한다. 치환 작업은 매 줄마다 검색 문자열 하나씩 실행되는데, g를 사용하지 않으면 각 줄 마다 첫번째 검색 문자열만 변경된다.

:%s/Line/line/gc

:1,9s/Line/line/gc

:1,$s/Line/line/gc

사용자 확인 메시지를 표시하는 치환 명령어를 사용할 수 있다. 명령어 끝에 c를 입력하기만 하면 된다.




Posted by 제로스틴
,

<커서이동>

MAC -> UBUNTU SSH 원격 접속시 MAC 기본 터미널 커맨드라인 단축키이다.

커맨드 라인 명령이 길어지면 커서 한글자씩 이동하면 시간이 오래걸릴 때가 있다. 이럴 때 맨 앞이나 맨 끝으로 커서 이동, 단어 간의 이동이 가능하면 조금이라도 덜 귀찮아 진다.


참고> 책 : 리눅스커맨드라인 완벽입문서 참고하여 MAC환경에 맞게 수정했다.


예) 정규표현식 사용하는 경우 명령행이 길어진다.

sharpen@sharpen-desktop:~$ echo "This works." | grep -E '[[:upper:]][[:upper:][:lower:]]*\.'

 키

실행 

control-a

 줄 맨 앞으로 커서 이동

control-e 

 줄 맨 끝으로 커서 이동

control-f 

 다음 한 글자로 커서 이동, 오른쪽 화살표키와 동일 

control-b 

 이전 한 글자로 커서 이동, 왼쪽 화살표키와 동일 

ESC-f 

 다음 한 단어로 커서 이동(연속 타이핑 안됨 ESC누르고 F키 차근 차근 순서대로 눌러야 먹는다. ESC누른 채로 FFFFFFF 안먹는다는 소리)

ESC-b 

 이전 한 단어로 커서 이동(연속 타이핑 안됨 ESC누르고 F키 차근 차근 순서대로 눌러야 먹는다. ESC누른 채로 FFFFFFF 안먹는다는 소리)) 

ctrl-l 

화면을 지우고 커서를 왼쪽 최상단으로 이동. clear 명령어와 동일 


<텍스트 수정>


 키

실행 

 control-d

 현재 커서 위치에 있는 글자 지우기

 control-t

 현재 커서 위치에 있는 글자와 바로 앞 글자 위치 바꾸기 

 ESC-t

 현재 커서 위치에 있는 단어와 바로 앞 단어 위치 바꾸기

 ESC-l

 현재 커서 위치에 있는 글자부터 그 단어 끝 부분까지 소문자로 바꾸기

 ESC-u

  현재 커서 위치에 있는 글자부터 그 단어 끝 부분까지 대문자로 바꾸기



<잘라내기/붙이기 명령어>


 키

실행 

 control-k

현재 커서 위치로부터 그 줄 끝 부분 까지 텍스트 지우기 

 control-u

 현재 커서 위치로부터 그 줄 처음 부분까지 텍스트 지우기 

 ESC-d

 현재 커서 위치에서부터 그 단어 끝 부분까지 텍스트 지우기

 ESC-delete

 현재 커서 위치에서부터 그 단어 앞 부분까지 텍스트 삭제하기. 단 커서가 단어 맨 앞에 위치하고 있다면 바로 앞 단어를 삭제한다 

control-y 

kill-ring에 있는 텍스트를 복사해서 현재 커서 위치에 삽입하기(!? 무슨 말인지 잘 모르겠음 ㅋㅋ)



Posted by 제로스틴
,