[완료] 정규식에서 글자를 얻으려고 합니다.

flowerdog의 이미지

정규식 초보입니다.

"== 제목 =="

위와같은 텍스트가 있다면 아래와 같은 정규식으로

^(?<first>=+)(?<title>.*)(?<last>=+)$

처리하면

${first} 는 "=="
${title} 은 " 제목 "
${last} 는 "=="

위와같은 결과가 나오리라 기대했습니다. 그러나 결과는 다음과 같습니다.

${first} 는 "=="
${title} 은 " 제목 ="
${last} 는 "="

기대한대로 글자를 자르려면 어떻게 해야할까요?

keizie의 이미지

title을 .*으로 정했으므로, last의 =+를 만족하면서, 가장 크게 취한 결과가 " 제목 ="입니다. .* 대신 [^=]* 등으로 한정하면 되겠습니다.

flowerdog의 이미지

kz님 감사드립니다. 그런데 제가 질문을 할 때 가정하지 못한 경우가 나타났네요.

== C언어에서 =혹은 ==의 차이는? ==

위와같은 경우도 아래와 같은 결과가 나와야 합니다.

first = "=="
title = " C언어에서 =혹은 ==의 차이는? "
last = "=="

이렇게 됐으면 하는데 다른 방법이 있을까요?

답변 다시 한 번 감사드립니다.

peecky의 이미지

^(=+)(.*?)(=+)$

'.*'은 가장 크게 취한 결과, '.*?'는 최소로 취한 결과를 가져옵니다.

flowerdog의 이미지

두 분 모두 감사드립니다. 덕분에 프로그램이 잘 돌아가네요.