$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.
원하는 식 중의 하나는 E.*B 가 되겠네요.
스칼라 -> 배열은 여러가지 방법이 있지만 문자열을 규칙대로 나누려면 split()을 이용하는 것이 보통입니다.
-- 익스펙토 페트로눔
추가질문입니다.
위의 변수에 들어가있는 스트링을 정규표현식을 이용해서 다른 스칼라 변수에 저장 어떻게 할 수 있나요?
정규표현식을 전혀 모르니까 고생하고 있습니당...
답변좀 부탁드리겠습니다.
즐거운 perl과의 시간이 되기를 빌며 ...
첫번째 English 모듈을 사용하는 경우
use English; my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA"; $str =~ /E.*B/; print "$PREMATCH:$MATCH:$POSTMATCH\n";
두번째 English 모듈을 사용하지 않는 경우
my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA"; $str =~ /E.*B/; print "$`-$&-$'\n";
답변들 감사합니다...
그런데 한가지 문제가 생겨버리는군요.
E로 시작해서 B로 끝나는 패턴을 찾는 경우에
E.*B 이렇게 하면 가장 마지막의 B를 찾는군요.
가장 처음에 나타나는 B를 찾는 방법은 없을까요...
예를 들면
EAAABAAAB
이렇게 되면 EAAAB만 찾는 것입니다...
제 생각에는 정규표현식중에 중간에B가 안들어간다는 조건을 넣으면 될것같습니다만 찾지를 못하겠네요
짧은 지식에 계속 이렇게 물어보기가 부끄럽습니다..
답을 찾았습니다.
/$str =~ /E(.[A-Z]+)B/;
print $1;
군요.. E와B는 필요없고 사이것만 필요했거든여
답변들 감사..^^
답을 찾았습니다. /$str =~ /E(.[A-Z]+)B/; print $1; 군요.. E와B는 필요없고 사이것만 필요했거든여 답변들 감사..^^
$str 이 "EB", "EaB", "EBB", "EEB", "EXB" 등등 여러가지 경우에
잡아내기가 힘드실 것 같습니다.
$str =~ /E(.*?)B/;
또는
$str =~ /E([^EB]*)B/;
를 쓰시는 것이 맞을 듯 합니다.
전자의 경우에는 EEEEEXXXX 로 잡히고, 후자의 경우는 XXXX 로 잡힙니다.
텍스트 포맷에 대한 자세한 정보
<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]
E.*B 혹은 E+*B가 이로 시작해서 끝나는 것입니다.sed일
E.*B 혹은 E+*B가 이로 시작해서 끝나는 것입니다.
sed일 경우라면,
/.*\(E.*B\).*/\(1\)/
정도가 되겠군요...
아니면 그냥 /\(E.*B\)/\(1\)/로 되려냐..
지금 2000으로 작업중이라 확인은 안돼서..
참고만 하세요.
There is no spoon. Neo from the Matrix 1999.
원하는 식 중의 하나는 E.*B 가 되겠네요.스칼라 -> 배
원하는 식 중의 하나는 E.*B 가 되겠네요.
스칼라 -> 배열은 여러가지 방법이 있지만 문자열을 규칙대로 나누려면 split()을 이용하는 것이 보통입니다.
--
익스펙토 페트로눔
추가질문입니다.$str = "ABCDEFGHIJKLEMNABCCC
추가질문입니다.
$str = "ABCDEFGHIJKLEMNABCCCEEAAAA";
위의 변수에 들어가있는 스트링을 정규표현식을 이용해서 다른 스칼라 변수에 저장 어떻게 할 수 있나요?
정규표현식을 전혀 모르니까 고생하고 있습니당...
답변좀 부탁드리겠습니다.
두가지 방법이 있습니다.
즐거운 perl과의 시간이 되기를 빌며 ...
첫번째 English 모듈을 사용하는 경우
use English;
my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA";
$str =~ /E.*B/;
print "$PREMATCH:$MATCH:$POSTMATCH\n";
두번째 English 모듈을 사용하지 않는 경우
my $str = "ABCDEFGHIJKLEMNABCCCEEAAAA";
$str =~ /E.*B/;
print "$`-$&-$'\n";
답변들 감사합니다...그런데 한가지 문제가 생겨버리는군요.
답변들 감사합니다...
그런데 한가지 문제가 생겨버리는군요.
E로 시작해서 B로 끝나는 패턴을 찾는 경우에
E.*B 이렇게 하면 가장 마지막의 B를 찾는군요.
가장 처음에 나타나는 B를 찾는 방법은 없을까요...
예를 들면
EAAABAAAB
이렇게 되면 EAAAB만 찾는 것입니다...
제 생각에는 정규표현식중에 중간에B가 안들어간다는 조건을 넣으면 될것같습니다만 찾지를 못하겠네요
짧은 지식에 계속 이렇게 물어보기가 부끄럽습니다..
답을 찾았습니다./$str =~ /E(.[A-Z]+)B/;
답을 찾았습니다.
/$str =~ /E(.[A-Z]+)B/;
print $1;
군요.. E와B는 필요없고 사이것만 필요했거든여
답변들 감사..^^
[quote="yogurtjc"]답을 찾았습니다./$str =~
$str 이 "EB", "EaB", "EBB", "EEB", "EXB" 등등 여러가지 경우에
잡아내기가 힘드실 것 같습니다.
$str =~ /E(.*?)B/;
또는
$str =~ /E([^EB]*)B/;
를 쓰시는 것이 맞을 듯 합니다.
전자의 경우에는 EEEEEXXXX 로 잡히고, 후자의 경우는 XXXX 로 잡힙니다.
댓글 달기