펄과 정규표현식에 관한 질문입니다.

yogurtjc의 이미지

$str안에 알파벳 문자열이 있다고 할 경우에

$str = "ABCDEFGHIJKLEMNABCCCEEAAAA";

여기서 E로 시작해서 B로 끝나는 문자열만 추출하려는 정규표현식은 어떤 것인가요?

저기서 문제대로 추출한다면 EFGHIJKLEMNAB 가 되겠지요..

답변좀 부탁드립니다..정규표현식이 아니면

스칼라로 되어있는 자료를 배열로 어떻게 바꿀 수 있나요?

지리즈의 이미지

E.*B 혹은 E+*B가 이로 시작해서 끝나는 것입니다.

sed일 경우라면,
/.*\(E.*B\).*/\(1\)/

정도가 되겠군요...

아니면 그냥 /\(E.*B\)/\(1\)/로 되려냐..

지금 2000으로 작업중이라 확인은 안돼서..
참고만 하세요.

There is no spoon. Neo from the Matrix 1999.

cjh의 이미지

원하는 식 중의 하나는 E.*B 가 되겠네요.

스칼라 -> 배열은 여러가지 방법이 있지만 문자열을 규칙대로 나누려면 split()을 이용하는 것이 보통입니다.

--
익스펙토 페트로눔

yogurtjc의 이미지

추가질문입니다.

$str = "ABCDEFGHIJKLEMNABCCCEEAAAA";

위의 변수에 들어가있는 스트링을 정규표현식을 이용해서 다른 스칼라 변수에 저장 어떻게 할 수 있나요?

정규표현식을 전혀 모르니까 고생하고 있습니당...

답변좀 부탁드리겠습니다.

dalekang의 이미지

즐거운 perl과의 시간이 되기를 빌며 ...

첫번째 English 모듈을 사용하는 경우

use English;
my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA";
$str =~ /E.*B/;
print "$PREMATCH:$MATCH:$POSTMATCH\n";

두번째 English 모듈을 사용하지 않는 경우

my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA";
$str =~ /E.*B/;
print "$`-$&-$'\n";

yogurtjc의 이미지

답변들 감사합니다...

그런데 한가지 문제가 생겨버리는군요.

E로 시작해서 B로 끝나는 패턴을 찾는 경우에

E.*B 이렇게 하면 가장 마지막의 B를 찾는군요.

가장 처음에 나타나는 B를 찾는 방법은 없을까요...

예를 들면

EAAABAAAB

이렇게 되면 EAAAB만 찾는 것입니다...

제 생각에는 정규표현식중에 중간에B가 안들어간다는 조건을 넣으면 될것같습니다만 찾지를 못하겠네요

짧은 지식에 계속 이렇게 물어보기가 부끄럽습니다..

yogurtjc의 이미지

답을 찾았습니다.

/$str =~ /E(.[A-Z]+)B/;

print $1;

군요.. E와B는 필요없고 사이것만 필요했거든여

답변들 감사..^^

최종호의 이미지

yogurtjc wrote:
답을 찾았습니다.

/$str =~ /E(.[A-Z]+)B/;

print $1;

군요.. E와B는 필요없고 사이것만 필요했거든여

답변들 감사..^^

$str 이 "EB", "EaB", "EBB", "EEB", "EXB" 등등 여러가지 경우에

잡아내기가 힘드실 것 같습니다.

$str =~ /E(.*?)B/;

또는

$str =~ /E([^EB]*)B/;

를 쓰시는 것이 맞을 듯 합니다.

전자의 경우에는 EEEEEXXXX 로 잡히고, 후자의 경우는 XXXX 로 잡힙니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.