Pcretest/pcre2test: Difference between revisions

From 탱이의 잡동사니
Jump to navigation Jump to search
m (Pchero moved page Pcre to Pcretest/pcre2test without leaving a redirect)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Overview ==
== Overview ==
pcre 정규 표현식 내용 정리.
pcre 사용법 내용 정리.


== Basic ==
== Basic ==
Pcre(Perl Compatible Regular Expression - 간단하게, 정규 표현식)에는 몇가지 기본 규칙들이 있다.
대부분의 아스키 문자들은 매치되는지를 알아보기 위해서 쓰이지만, 특별한 의미를 나타내는 아스키 문자들도 있다. 예를 들어 '['는 집합의 시작을 나타낸다. '-'는 범위를 나타내는 특별한 의미를 가진 문자이다. 이러한 문자를 의미없이 쓰려면 문자 앞에 '\'를 붙이면 된다. [a-zA-Z0-9\-]가 이러한 예이다. 일부 변형된 정규 표현식에서는 약간 다른 표현이 쓰인다. 특별한 문자가 '\'와 함께 시작되는 정규 표현식을 쓰는 경우도 있다. 이 경우 일반적인 아스키 문자를 나타내기 위하여 '\'를 제거해야 한다.
=== 한 문자 패턴 ===
기본적인 정규 표현식은 한 문자 패턴(single-character pattern)으로 이루어져 있다. 정확히 한 문자와 맞는 경우를 말한다.
<pre>
egrep 'Kerry' sample.txt
</pre>
위와 같은 예제에서는 sample.txt에 정확히 'Kerry' 가 있는 문자열 만을 출력하게 된다.
=== Anchors ===
Anchor는 정규 표현식에서 문자의 위치를 나타내거나 텍스트에 없는 문자를 나타내는 특별한 문자이다.
* ^ 줄의 시작을 나타낸다.
* $ 줄의 끝을 나타낸다.
<pre>
egrep '567$' sample.txt
</pre>
만약 위와 같이 입력하면, 라인의 끝이 '567'로 끝나는 문자열을 검색하게 된다.
=== Dot(.) ===
점(.)은 특별한 의미를 가진 특수 문자이다. newline 문자를 제외한 모든 문자를 나타낸다.
<pre>
egrep '.ello' sample.txt
</pre>
위의 표현은 두번째 문자가 2이고, 첫 문자는 아무 문자나 나오는 줄을 탐색하는 줄이다. 'Hello', 'hello', '1ello', ' ello', ... 등등의 문자열이 검색된다.
=== Set ===
검색하고 하는 문자를 집합으로 표현이 가능하다.
그리고, 문자들은 그룹화되어 집합이 될 수 있다. 집합은 '[' 로 시작해서 ']'로 끝이 난다. 그리고 그 사이에 문자들이 있는 것을 말한다. 집합또한 한 문자 패턴이다. 집합 안에 있는 한 문자만이 텍스트의 탐색에서 짝을 이룰 수 있다.
<pre>
[abc]          a, b 혹은 c가 매치되는지 보는 한 문자 패턴
[ab0-9]        a, b 혹은 숫자에 해당되는지를 나타내는 한 문자 패턴
[a-zA-Z0-0\-]  대문자, 소문자, 음수 기호(-)의 매치를 나타내는 한문자 패턴
</pre>
만약 다음과 같이 한다면,
<pre>
egrep '1[348]' sample.txt
</pre>
13, 14, 18 이 있는 문자열만을 출력하게 된다.
집합의 처음을 '['로 사용하지 않고 '[^'로 사용하면 역집합을 나타낸다. '[' 뒤에 있는 '^'는 줄의 시작을 나타내지 않고 역을 나타낸다.
<pre>
[0-9]      0과 9사이의 숫자를 나타내는 한 문자 패턴
[^0-9]      숫자가 아닌 문자
[^abc]      a, b, c 문자가 아닌 모든 문자
.          점(.)은 newline 문자가 아닌 모든 문자를 나타낸다. 즉, [^\n]와 같다.
</pre>
1로 시작되지 않는 줄을 찾기 위해서 다음과 같이 쓸 수 있다.
<pre>
egrep '^[^1]' sample.txt
</pre>
=== Multipliers ===
Mutiplier 는 한 문자 패턴이 텍스트에서 얼마나 자주 반복되는지를 결정한다.
== Test ==
=== pcretest/pcre2test ===
=== pcretest/pcre2test ===
작성한 정규 표현식을 쉽게 테스트해볼 수 있게 해주는 굉장히 유용한 툴이다. 확인하고자하는 정규 표현식을 먼저 입력하고, 샘플 문장을 입력하면 된다. pcre-10.0 부터는 pcre2 로 부른다.
<pre>
<pre>
$ pcretest  
$ pcretest  
Line 86: Line 27:
== See also ==
== See also ==
* http://dokydoky.tistory.com/276 - 정규표현식 패턴 문법(PCRE 정규표현식 문법)
* http://dokydoky.tistory.com/276 - 정규표현식 패턴 문법(PCRE 정규표현식 문법)
* http://www.codeforum.net/wiki/doku.php?id=pcre_%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D_%EB%AC%B8%EB%B2%95 - pcre_정규표현식_문법


== References ==
== References ==
<references />
<references />


[[category:programming]]
[[category:regex]]

Latest revision as of 08:15, 19 August 2016

Overview

pcre 사용법 내용 정리.

Basic

pcretest/pcre2test

작성한 정규 표현식을 쉽게 테스트해볼 수 있게 해주는 굉장히 유용한 툴이다. 확인하고자하는 정규 표현식을 먼저 입력하고, 샘플 문장을 입력하면 된다. pcre-10.0 부터는 pcre2 로 부른다.

$ pcretest 
PCRE version 7.8 2008-09-05
  re> "(.+): (.+)"
data> Message: Unable to add interface: Already there
 0: Message: Unable to add interface: Already there
 1: Message: Unable to add interface
 2: Already there

$ pcre2test 
PCRE2 version 10.10 2015-03-06
  re> "(.+): (.+)" 
data> Message: Unable to add interface: Already there
 0: Message: Unable to add interface: Already there
 1: Message: Unable to add interface
 2: Already there

애석하지만, 현재 우분투에서는 pcretest 프로그램을 사용할 수 없다. 원래는 libpcre3 패키지에 포함되어 있었던 것 같은데, 2011년부터 패키징에서 빠지게되었던 것. 사람들이 이에 대해서 많이 요청하고는 있지만 현재까지 추가되지 않고있는 상황이다(2015.11)<ref>https://bugs.launchpad.net/ubuntu/+source/pcre3/+bug/889073</ref>. 아무튼 이런 이유로 우분투에서 pcretest 를 사용할 수 없지만, 대안으로 pcre2test 소스코드를 다운받아 설치하는 방법이 있다. 다음 링크에서 적당한 소스 패키지를 다운받아서 설치하면 된다.

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

See also

References

<references />