>백엔드 개발 >PHP 튜토리얼 >정규식 및 텍스트 마이닝--텍스트 마이닝

정규식 및 텍스트 마이닝--텍스트 마이닝

伊谢尔伦
伊谢尔伦원래의
2016-12-05 11:56:331467검색

텍스트 마이닝을 수행할 때 TSQL의 와일드카드 문자(Wildchar)가 부족한 것 같습니다. 이때 "CLR + 정규식"을 사용하는 것은 매우 복잡한 것처럼 보이지만 항상 그렇습니다. Zong님, 정규식의 메타데이터에 능숙하다면 정규식을 능숙하고 유연하게 사용하여 복잡한 텍스트 마이닝 작업을 완료할 수 있을 것입니다.

1. 정규 표현식의 특수 문자

1. 일반적으로 사용되는 메타 문자

는 특정 문자(문자, 숫자, 기호)를 일치시키는 데 사용됩니다. sensitive 작성:

.: 줄 바꿈을 제외한 모든 문자와 일치합니다.
w: 문자, 숫자, 밑줄 또는 중국어 문자와 일치합니다.
s: 모든 공백 문자와 일치합니다.
d: 숫자와 일치합니다.
b: 단어의 시작 또는 끝과 일치
^: 문자열의 시작과 일치
$: 문자열의 끝과 일치
k: 그룹 이름을 참조합니다. 예: k는 참조를 의미합니다. group_name
group_number라는 그룹: group_number는 그룹의 그룹 번호(1, 2, 3 등)입니다. 이는 그룹이 그룹 번호
2, 반복되는 문자 또는 그룹

으로 참조됨을 나타냅니다. 🎜>은 이전 문자나 그룹이 반복되는 횟수를 지정합니다.

: 0회 이상 반복

: 1회 이상 반복

?: 0회 또는 1회 반복
{n}: n회 반복
{n,}: n회 이상 반복
{n,m}: n~m회 반복
3, 그룹화, 이스케이프, 분기, 한정자

이 문자는 특정 의미와 용도를 갖습니다.

(): 그룹을 나타내려면 괄호를 사용합니다.

<>: 그룹 이름을 정의합니다. < 그룹 이름
: 이스케이프 문자, 특수 문자를 일반 문자로 변환합니다. 예: (, 괄호 "("를 나타내며 괄호는 더 이상 특수 문자로 사용되지 않습니다.
|: 분기, 표현식 간의 관계는 "or"입니다.
[] : 정규화된 문자 목록을 지정합니다. 문자는 목록의 모든 문자와 일치해야 합니다. 예를 들어 다음과 같습니다. [aeiou] 문자는 aeiou; [^] : 제외된 문자를 지정합니다. 문자는 제외 목록의 어떤 문자도 될 수 없습니다. 제외된 문자 목록은 괄호 안에 지정됩니다. 예: [^aeiou] 문자는 aeiou에 있는 어떤 문자도 될 수 없습니다. . 그룹 참조

그룹화는 괄호를 사용하여 지정하는 하위 표현식입니다. 그룹화 참조는 정규식을 보다 간결하게 만들기 위해 표현식에서 하위 표현식을 반복적으로 사용하는 것을 의미합니다. 기본적으로 그룹화는 자동으로 이루어집니다. 그룹 번호가 할당됩니다. 그룹 번호는 1부터 시작하여 왼쪽에서 오른쪽으로 1씩 증가합니다(예: 첫 번째 그룹의 그룹 번호는 1이고 그룹은 1입니다). 두 번째 그룹의 번호는 1입니다. 번호는 2입니다.

그룹 정의에는 세 가지 형식이 있습니다.

(exp): 자동으로 그룹 번호를 할당하고 그룹을 참조합니다. 그룹 번호를 통해;

(?exp) : 그룹 이름을 지정하고 그룹 이름을 통해 그룹을 참조합니다.

(?:exp) : 그룹은 현재 위치의 텍스트와만 일치합니다. 그룹은 참조할 수 없습니다. 그룹 이름과 그룹 번호가 없습니다.

1, 그룹 번호를 통해 그룹을 참조하세요

정규식 뒤에 그룹(exp)을 정의합니다. 표현식의 경우 그룹 번호를 통해 그룹을 참조할 수 있습니다. 그룹 참조 구문은 다음과 같습니다. :group_number;

예: b(w+)bs+1b, 이 정규식에는 다음과 같은 것이 있습니다. 하나의 그룹(w+)이고 그룹 번호는 1입니다. 그룹 다음에는 1을 사용하여 그룹화를 참조하고 1을 b(w+)bs+(w+)b와 동등한 그룹화된 하위 표현식으로 바꿉니다.

2, 그룹 이름을 통해 그룹 참조

정규식에서 그룹 이름을 지정할 수 있으며, 명명된 그룹 형식: (?exp), 그룹 이름은 name, 참조 이름을 통해 그룹에 그룹 형식은 k입니다. 그룹은 그룹 이름과 그룹 번호를 통해 참조되며 텍스트 일치 동작은 동일합니다.

예: b(?w+)bs+1b, 그룹 뒷부분에서 k를 사용하여 그룹을 참조하고 k를 그룹의 하위 표현식으로 바꾸세요. 이는 다음과 같습니다. b(w+ )bs+(w+)b.

3, 인용할 수 없는 그룹화

(?:exp): 이 구문을 사용하여 정의된 그룹은 인용할 수 없으며 현재 위치의 텍스트만 일치시킬 수 있습니다. 정규식은 그룹이 자동으로 할당되지 않습니다. 숫자.

3. Assertion 검색

Assertion은 해당 표현식이 true인 경우에만 일치가 성공합니다. 일치가 성공하면 반환된 텍스트에 접두사 또는 접미사가 포함되지 않습니다. 즉, 어설션은 특정 "텍스트" 앞이나 뒤에 오는 텍스트를 찾는 데 사용됩니다. 어설션을 위한 네 가지 구문:

(?=exp): 텍스트의 뒷부분이 표현식 exp와 일치하고 exp 위치 앞의 식이 반환됩니다.

(?<=exp): 앞 부분입니다. 텍스트의 표현식이 exp와 일치하고, exp 위치 뒤의 표현식을 반환합니다.

(?!exp): 텍스트의 접미사가 exp가 아니며, 접미사가 exp가 아닌 표현식을 반환합니다.

(? < ; !exp): 텍스트의 접두사가 exp가 아니고 접두사를 반환합니다. exp가 아닌 표현식
1, 접미사 일치

(?=exp): 표현식 exp는 텍스트 뒤에 일치합니다. , exp 위치 앞의 표현식이 반환됩니다. 접미사 일치는 TSQL의 "%ing"과 유사합니다.

예: 정규식: bw+(?=ingb)

분석: 접미사가 ing이고 단어의 끝(b)인지 확인하고, ing으로 끝나는 단어를 일치시키되, 단어의 앞 부분, 즉 ing 앞 부분을 반환합니다. 예를 들어 "I'm reading a book"을 찾으면 이 문자가 ing으로 끝나기 때문에 "reading"과 일치합니다. 이 정규식은 반환된 텍스트에 접미사가 포함되어 있지 않다고 가정하여 read를 반환합니다.

2, 접두사 매칭

(?<=exp): 텍스트 앞부분이 exp 표현식과 일치하고, exp 위치 뒤의 표현식이 반환됩니다. 접두사 일치는 TSQL의 "re%"와 유사합니다.

예: 정규식: (?<=bre)w+b


분석: 단어의 시작(b) 및 접두사 단어 중 re가 re로 시작하는 단어와 일치하고, 단어의 후반부인 re 뒤의 부분을 반환합니다.

예를 들어 "I am reading a book"을 찾으면 "reading"과 일치합니다. " 문자 앞에 Starting with re가 있기 때문에 이 정규식은 반환된 텍스트에 접두사가 포함되지 않음을 확인하면서 ading을 반환합니다.

3. 접두사 또는 접미사가 특정 텍스트가 아닌 텍스트를 찾습니다.

이 두 가지 주장 검색은 이전 두 가지와 반대이며 효과가 거의 없습니다.

( ?!exp): 텍스트의 접미사가 exp가 아니고, 접미사가 exp가 아닌 표현식이 반환됩니다.

(? < !exp): 텍스트의 접두사가 입니다. exp가 아니고 접두사가 ​​exp가 아닙니다.

3.1 예를 들어 정규식 수식: bw+(?!ingb)

분석: ing으로 끝나는 단어를 일치시키지 말고 "I am"을 검색하세요. reading a book", 반환된 텍스트: I, am, a, book

3.2 예를 들어 정규식: (?< !bre)w+b

분석: 단어가 일치하지 않습니다. re로 시작하여 "I am reading a book"을 검색하면 반환된 텍스트: I, am, a,book

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.