달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'regex'에 해당되는 글 3

  1. 2017.04.28 sed로 텍스트 바꾸기
  2. 2017.04.21 문자클래스
  3. 2017.03.05 비참조 그룹
2017. 4. 28. 21:15

sed로 텍스트 바꾸기 정규표현식2017. 4. 28. 21:15

sed -E '1s/^(.*)/<!Doctype html>\

<head>\

<title>\1</title>\

</head>\

/;q' test.txt



1. -E 옵션 : sed가 확장정규표현식을 사용할 수 있게 해준다. 만약 이 옵션이 없다면 괄호를 표기할 때 \(\) 처럼 처리해 주어야 한다.

2. s : 1행에서 뒤에 나오는 패턴으로 검색하여 치환한다.

3. (^(.*)$) : 참조그룹으로 행 전체를 선택.  \1로 재참조한다.

4. \ : 행 끝에 \를 붙여서 개행문자의 특수의미를 무효화한다. (=> 명령어를 여러줄에 걸쳐 입력할 수 있다)

5. q : 화면에 텍스트 나머지를 출력하지 않고 sed를 종료한다.


결과 : test.txt파일의 첫 행의 내용을 html형식으로 맞추어 title 태그안에 넣는다.

'정규표현식' 카테고리의 다른 글

수량자  (0) 2017.07.30
문자클래스  (0) 2017.04.21
비참조 그룹  (0) 2017.03.05
패턴변경자(정규표현식 옵션)  (0) 2017.02.18
Regular Expressions을 공부하자  (0) 2017.02.12
:
Posted by SK
2017. 4. 21. 21:36

문자클래스 정규표현식2017. 4. 21. 21:36

ㅁ 대괄호식(bracketed expressions)    ex) 단축문자 \d = 문자클래스 [0-9]

  - 10 ~ 19 사이의 짝수 표현 : \b[1][24680]\b

  - 0 ~ 99 사이의 짝수 표현 : \b[02468]\b | \b[1-9][02468]\b

  - 공백, 영문자, 숫자 등 : [\w\s] = [a-zA-Z0-9\t\n\r]


 o 부정문자클래스 

   - a, e, i, o, u를 제외 : [^aeiou]  <- 대괄호 안 시작위치에서 ^ 사용

 

 o 합집합, 차집합

   * Java 지원 (but 모든 정규표현식 엔진에서 지원하지는 않는다)

   - 0 ~ 3 또는 6 ~ 9 : [0-3[6-9]] 

   - a-z 문자중 m-r은 제외 : [a-z&&[^m-r]]


 o POSIX(Portable Operating System Interface) 문자클래스 (IEEE9 인터페이스 표준 규격)   

   - [[:xxxx:]] , [[:^xxxx:]] 형식으로 사용

   - 영문자숫자 : [[:alnum:]]

   - 아스키문자 : [[:ascii:]]

   - 공백문자 : [[:space:]]

   - 소문자 : [[:lower:]]

   - 숫자 : [[:digit:]]

   - 단어 : [[:word:]]

   - 문장부호 : [[:punct:]]

   - 알파벳문자 : [[:alpha:]]

   

'정규표현식' 카테고리의 다른 글

수량자  (0) 2017.07.30
sed로 텍스트 바꾸기  (0) 2017.04.28
비참조 그룹  (0) 2017.03.05
패턴변경자(정규표현식 옵션)  (0) 2017.02.18
Regular Expressions을 공부하자  (0) 2017.02.12
:
Posted by SK
2017. 3. 5. 21:56

비참조 그룹 정규표현식2017. 3. 5. 21:56

정규표현식에서는 괄호( ex) (Test) )를 사용해서 그룹을 지정할 수 있다. 

나중에 사용하는 도구에 따라 $1 또는 \1 의 표현으로 괄호안의 표현식을 참조할 수 있는데, 

해당 내용을 메모리에 저장하기 때문에 성능에 영향을 줄 수 있다. 

만일 괄호 안의 내용을 나중에 참조할 필요가 없다면, 비참조 그룹을 활용하여 성능향상에 도움을 줄 수 있다.

그룹을 비참조 그룹으로 만들기 위해서는 왼쪽 괄호 다음에 '?:'를 적으면 된다.

예를 들어 (the|THE)(?:the|THE)라고 적음으로써 비참조 그룹화시킬 수 있다.

만일 대소문자 구분 없이 모두 찾는 경우라면 옵션을 사용할 텐데, 그 때는 다음과 같이 쓰면 된다. 

(?i)(?:the) = (?:(?i)the)=(?i:the)


<참고>

(?>the)처럼 쓰는 것을 원자그룹이라고 하는데, 백트래킹을 사용하는 정규표현식 엔진에서 

원자그룹에 해당하는 부분은 백트래킹을 하지 않게 할 수 있다.

'정규표현식' 카테고리의 다른 글

수량자  (0) 2017.07.30
sed로 텍스트 바꾸기  (0) 2017.04.28
문자클래스  (0) 2017.04.21
패턴변경자(정규표현식 옵션)  (0) 2017.02.18
Regular Expressions을 공부하자  (0) 2017.02.12
:
Posted by SK