김컴공랩

[알고리즘] 정규표현식 (Regex) 에서 +, * 와 같은 메타데이터 표현하기 본문

알고리즘

[알고리즘] 정규표현식 (Regex) 에서 +, * 와 같은 메타데이터 표현하기

김컴공 2021. 3. 1. 21:54

헬로월드! 김컴공입니다.

 

대표적인 정규표현식으로 다음과 같은 기호들이 존재합니다.

? 물음표는 0번 또는 1차례까지의 발생을 의미한다. 이를테면 colou?r는 "color"와 "colour"를 둘 다 일치시킨다.
* 별표는 0번 이상의 발생을 의미한다. 이를테면 ab*c는 "ac", "abc", "abbc", "abbbc" 등을 일치시킨다.
+ 덧셈 기호는 1번 이상의 발생을 의미한다. 이를테면 ab+c는 "abc", "abbc", "abbbc" 등을 일치시키지만 "ac"는 일치시키지 않는다.
{n} 정확히 n 번만큼 일치시킨다.
{min,} "min"번 이상만큼 일치시킨다.
{min,max} 적어도 "min"번만큼 일치시키지만 "max"번을 초과하여 일치시키지는 않는다.

 

만약 ?, *, + 와 같은 메타데이터를 정규표현식으로 사용하고 싶다면?

 

55-50+40

위 숫자식을 파싱하기 위해서는 JAVA 의 경우 split 함수의 인자로 다음과 같은 인자를 주면 됩니다.

 

String str = "55-50+40"
String[] = str.split("\\+")

 

결과

[55-50, 40]

 

 

위의 경우 split 함수의 인자로 \\+ 를 주었는데요, 그냥 + 를 넣게 되면 정규표현식의 기호 + 로 인식을 하여 에러가 발생하게 됩니다. 따라서 정규표현식의 기호를 정규표현식으로 사용하고 싶을 때는 각 기호의 앞에 \\ 를 입력하시면 됩니다.