perl 중에 원하는 문자열부터 출력하게 하려면어떻게 하죠 고수님들 부탁드려요

windyguy81의 이미지

ex) abcdefghijklmn 문자열에서

원하는 b부터 j까지 출력하려면 어떻게 해야할까요..

해결) bcdefghij

그리고 만약

ex) 가나다라마바사아자차아자차

에서 나부터 아까지

해결) 나다라마바사아
나다라마바사아자차아

이런식으로 2개를 출력하게 가능할까요...고수님들 부탁드려요

aero의 이미지

$ perl -le 'print "abcdefghijklmn" =~ m/(b.*?j)/'
bcdefghij
$ perl -le 'print "가나다라마바사아자차아자차" =~ m/(나.*?아)/'
나다라마바사아
$ perl -le 'print "가나다라마바사아자차아자차" =~ m/(나.*아)/'
나다라마바사아자차아

amorette의 이미지

문자열 내에서 각 첫글자와 끝글자가 일치하는 모든 서브 문자열의 복사본의 리스트를 리턴하려고 할 때,
한가지 방법으로 look-ahead assertion (?=...) 을 사용합니다.

즉 매치 검색시 (?=.*$end)와 같이 하여 원하는 문자열($end)이 뒤에 존재할 경우 현재의 위치가 매치되며,
그 위치로부터 while 루프를 순회하여 매치되는 모든 $end의 위치(pos)를 통해 서브 문자열(substr)을 얻습니다.

#!/usr/bin/perl
use 5.010;
use warnings;
use strict;
 
sub match_end_points {
    my ($string, $start, $end) = @_;
    my @ret;
 
    while( $string =~ /$start(?=.*$end)/g ){
        my $substr = $';
        while( $substr =~ /.*?$end/g ){
             push @ret, $start.substr($substr, 0, pos($substr));
        }
    }
    @ret;
}
 
say " @ example 01";
say for match_end_points( "bcdefghij", "b", "j" );
say "";
 
say " @ example 02";
say for match_end_points( "가나다라마바사아자차아자차", "나", "아" );
say "";
 
say " @ example 03";
say for match_end_points( "abcbdeacb", "a", "b" );
say "";

say() 함수는 Perl 5.10 버전 이상에서만 제공되며,
버전이 낮을 경우 use 5.010 프래그마를 주석 처리한 뒤:

sub say (_) { print defined(@_) ? @_ : "", "\n" }

와 같이 동일한 동작을 하는 사용자 함수를 정의할 수 있습니다.
다음은 실행 결과:

 @ example 01
bcdefghij
 
 @ example 02
나다라마바사아
나다라마바사아자차아
 
 @ example 03
ab
abcb
abcbdeacb
acb

~am0c~

댓글 달기

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