정규식에 대해서 질문 올립니다.

hsnks100의 이미지

제가 문자열을 받아서 이것이 제가 원하는 형태의 문자열인지 확인하는 정규식을 만들고 있는데요.

문제를 단순히 시켜서

이러한 문자열이면 통과하는 겁니다.

apple
banana
banana
apple
apple
banana
banana
banana

그러니까 한줄에 하나의 apple 또는 banana 가 있으면 되죠.

그래서 (^banana|^apple)+
이렇게 했는데요.
잘되는 듯 싶었는데
apple
banana
banana
343414
banana
banana

같은 문자열이 입력되면 당연히 그대로 찾더군요.

뭐 다른 방법 있나 싶어서 질문 드립니다 (__)

ps. perl 기본 문법입니다.

imyejin의 이미지

grep류로 잡아내시는 거라면 혹시 egrep (혹은 grep -e) 를 써야 되는데 그냥 grep 를 썼다든지 그런 것 아닙니까? egrep 를 썼다면 343414를 걸러내고 bannana와 apple은 통과시키는 분명히 잘 작동하는 정규식입니다. 그냥 grep 을 썼다면 아예 아무것도 일치가 안되기 때문에 통과가 되면 안되는데 글 내용만으로는 그런 경우도 아닌 것 같고요. 마지막으로 하나 이상 있는지 있는지 검사만 하는 거라면 맨 마지막에 + 는 굳이 필요가 없을 것 같습니다.

라이브러리나 도구마다 약간씩 정규식 문법이 다를 수도 있으니까 무슨 도구를 어떤 사용했는지 질문을 할 때 좀 정확하게 하셔야 하고요, 또 예제를 간단히 만든다면서 잘못된 부분을 생략할 수도 있으니 간소화한 예제에 덧붙여 실제 자신이 쓴 정규식과 데이타도 가능하시면 올리시는 것이 좋교, 질문을 하시기 전에 해당 라이브러리나 도구의 매뉴얼을 잘 읽어보세요.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

hsnks100의 이미지

boost::regex 기본설정으로 썼습니다. 질문이 잘못된 듯 싶네요 ㅠㅠ

apple
banana
banana
apple
apple
banana
banana
banana

같은 문자열은 찾고

apple
banana
banana
343414
banana
banana

같은건 실패로 리턴되는 정규식을 원합니다. match[1] 이
apple
banana
banana 이고

match[2] 가
banana
banana
로 들어가는 형태가 아니고 처음부터 끝까지 검색을 했을 때 잡문자가 들어가면 실패가 되어야하는데...

그리고 현재 테스트는 진짜 banana apple 로 테스트 중입니다;

----------------------------------------------------
개인 블로그: https://kangssu.com

imyejin의 이미지

여러 줄로 나누신 것은 편의상 나눈 거고 실제로는 applebannanaapple 이렇게 되어 있는 것으로 이해하겠습니다.

그런 경우라면 (^banana|^apple)+$ 로 하시면 되잖아요

$ 는 한줄로 된 문자열의 끝을 나타내는 거요. boost::regex 에서는 어떻게 되는지 모르겠지만

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

hsnks100의 이미지

정규식을 쓰다가 잘못 썼네요.

(^banana$|^apple$)+

로 쓰고 있습니다. 죄송 --;

각줄에 banana 혹은 apple 만 들어가는지 검사하는 정규식좀 부탁드립니다.

----------------------------------------------------
개인 블로그: https://kangssu.com

imyejin의 이미지

^(banana|^apple)+$

이렇게 하면
bannanaapplebannaappleapple
요론 것들이랑 매치가 되죠.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.