Pcretest/pcre2test: Difference between revisions

From 탱이의 잡동사니
Jump to navigation Jump to search
(Created page with "== Overview == pcre 정규 표현식 내용 정리. category:etc")
 
No edit summary
Line 2: Line 2:
pcre 정규 표현식 내용 정리.
pcre 정규 표현식 내용 정리.


[[category:etc]]
== 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 는 한 문자 패턴이 텍스트에서 얼마나 자주 반복되는지를 결정한다.
 
 
== See also ==
* http://dokydoky.tistory.com/276 - 정규표현식 패턴 문법(PCRE 정규표현식 문법)
 
[[category:programming]]

Revision as of 08:33, 21 October 2015

Overview

pcre 정규 표현식 내용 정리.

Basic

Pcre(Perl Compatible Regular Expression - 간단하게, 정규 표현식)에는 몇가지 기본 규칙들이 있다.

대부분의 아스키 문자들은 매치되는지를 알아보기 위해서 쓰이지만, 특별한 의미를 나타내는 아스키 문자들도 있다. 예를 들어 '['는 집합의 시작을 나타낸다. '-'는 범위를 나타내는 특별한 의미를 가진 문자이다. 이러한 문자를 의미없이 쓰려면 문자 앞에 '\'를 붙이면 된다. [a-zA-Z0-9\-]가 이러한 예이다. 일부 변형된 정규 표현식에서는 약간 다른 표현이 쓰인다. 특별한 문자가 '\'와 함께 시작되는 정규 표현식을 쓰는 경우도 있다. 이 경우 일반적인 아스키 문자를 나타내기 위하여 '\'를 제거해야 한다.

한 문자 패턴

기본적인 정규 표현식은 한 문자 패턴(single-character pattern)으로 이루어져 있다. 정확히 한 문자와 맞는 경우를 말한다.

egrep 'Kerry' sample.txt

위와 같은 예제에서는 sample.txt에 정확히 'Kerry' 가 있는 문자열 만을 출력하게 된다.

Anchors

Anchor는 정규 표현식에서 문자의 위치를 나타내거나 텍스트에 없는 문자를 나타내는 특별한 문자이다.

  • ^ 줄의 시작을 나타낸다.
  • $ 줄의 끝을 나타낸다.
egrep '567$' sample.txt

만약 위와 같이 입력하면, 라인의 끝이 '567'로 끝나는 문자열을 검색하게 된다.

Dot(.)

점(.)은 특별한 의미를 가진 특수 문자이다. newline 문자를 제외한 모든 문자를 나타낸다.

egrep '.ello' sample.txt

위의 표현은 두번째 문자가 2이고, 첫 문자는 아무 문자나 나오는 줄을 탐색하는 줄이다. 'Hello', 'hello', '1ello', ' ello', ... 등등의 문자열이 검색된다.

Set

검색하고 하는 문자를 집합으로 표현이 가능하다.

그리고, 문자들은 그룹화되어 집합이 될 수 있다. 집합은 '[' 로 시작해서 ']'로 끝이 난다. 그리고 그 사이에 문자들이 있는 것을 말한다. 집합또한 한 문자 패턴이다. 집합 안에 있는 한 문자만이 텍스트의 탐색에서 짝을 이룰 수 있다.

[abc]           a, b 혹은 c가 매치되는지 보는 한 문자 패턴
[ab0-9]         a, b 혹은 숫자에 해당되는지를 나타내는 한 문자 패턴
[a-zA-Z0-0\-]   대문자, 소문자, 음수 기호(-)의 매치를 나타내는 한문자 패턴

만약 다음과 같이 한다면,

egrep '1[348]' sample.txt

13, 14, 18 이 있는 문자열만을 출력하게 된다.

집합의 처음을 '['로 사용하지 않고 '[^'로 사용하면 역집합을 나타낸다. '[' 뒤에 있는 '^'는 줄의 시작을 나타내지 않고 역을 나타낸다.

[0-9]       0과 9사이의 숫자를 나타내는 한 문자 패턴
[^0-9]      숫자가 아닌 문자
[^abc]      a, b, c 문자가 아닌 모든 문자
.           점(.)은 newline 문자가 아닌 모든 문자를 나타낸다. 즉, [^\n]와 같다.

1로 시작되지 않는 줄을 찾기 위해서 다음과 같이 쓸 수 있다.

egrep '^[^1]' sample.txt

Multipliers

Mutiplier 는 한 문자 패턴이 텍스트에서 얼마나 자주 반복되는지를 결정한다.


See also