• ベストアンサー

Perlで文字列の切り出しをするには?

TNYの回答

  • TNY
  • ベストアンサー率42% (69/163)
回答No.1

$str = "Monday<From>Thursday<To>Friday"; if ($str =~ /<From>(.+)<To>/){$result = $1;} でどうでしょうか。 正規表現の()は$1,2,3..でとりだせます

AppleScripter
質問者

お礼

早速のアドバイスありがとうございます。 echo ' Monday<From>Thursday<To>Fridays' | perl -pe 'if ($STDIN = ~ /<From>(.+)<To>/){print $1;}' を実行すると、”Thursday Monday<From>Thursday<To>Fridays”が返ってきますが、Thursdayのみを取り出す方法はあるのでしょうか?

関連するQ&A

  • 正規表現を使った文字列の切り出し

    こんにちは ver_51 と言います. 決まったパターンの文字列から正規表現を使って抽出する方法で悩んでいます. 文字列のパターンは以下の通りです. 任意の文字列は.*で表しています. String line = ".*<a href=".*" .*">抽出したい箇所1</a>.*<a href=".*" .*">抽出したい箇所2</a>.*以下同じように続く"; String tray = new tray[100]; 実現したいことは正規表現を使って抽出したい箇所がある限り,trayに順番通りにいれるというものです. この場合だと tray[0]="抽出したい箇所1"; tray[1]="抽出したい箇所2"; ・ ・ ・ と入ってほしいです. お手数ですが,どうぞ宜しくお願い致します.

    • ベストアンサー
    • Java
  • ある法則に従った文字列を抜き出す方法

    以前、ある法則に従った文字列を抜き出す処理をゴリゴリ頑張って作ったのですが、 正規表現で1発で対象文字列を抜き出す事は出来ないのか?と思いました。 しかし、正規表現をそのパターンの時どう記述すると実現出来るのか分からず断念しました。 例えば 1.あいうえお((abc:えー|びー))かきくけこ 2.あいうえお((abc:えー))かきくけこ 3.あいうえお((abc:えー|びー|しー))かきくけこ 4.あいうえお((abc:えー|びー|しー))かきくけこ((abc:でぃー)) こんなのがあった時、パターンとして「((abc:」から「))」の間の文字列を 取得したいです。 1.の時は「えー|びー」、2.の時は「えー」、3.の時は「えー|びー|しー」、 4.の時は「えー|びー|しー」と「でぃー」を、その正規表現にマッチする文字列だとしたいのです。 「((abc:」、「))」の間の文字列長は可変です。 どなたか上記を実現する正規表現をご教示下さい。 正規表現でマッチさせるからには「((abc:」、「))」という文字列もマッチした文字列として 取得するでしょうが、それは後処理で削る事になるので何の問題もありません。

    • ベストアンサー
    • PHP
  • 文字列にコントロール文字を含むと何ができるの?

    プログラミングPerlを読んでいます。 ページをめくる速度が、すっごい遅いのですが・・・ やっとこさ74ページまできました・・・ 今回の疑問は文字列中にコントロール文字を埋め込むと何ができるの? というものです。 この疑問が浮かんだきっかけは このページでコントロール文字を表す正規表現が紹介されていたからです。 このような正規表現が用意されているということはコントロール文字を使用した文字列マッチを行うことを想定しているのだと思います。 すなわちコントロール文字を含んだ文字列を扱う場面が出てくるのだと思うのです。 このような文字列は、どのような場面で登場するのでしょうか。 また、どのような働きをするのでしょうか。 恐らく文字列を画面やプリンターへ出力するのと同時に、何か別の事柄を一緒に行うのではないかと予想しているのですが・・・ ちょっと気になったので質問しました。 どなたか教えてください。

    • ベストアンサー
    • Perl
  • ある文字列を抜き出す方法

    perlを使ってるわけじゃないのですが perl互換の正規表現ができるソフトで a1.*?x2 という正規表現を抜き出すようにしたいのですが どうすればいいでしょうか? a1.*?x2 という文字列は、文章の中に複数でてきて 文章に規則性などもなく「a1」と「x2」の前後も決まった文字ではありません 「a1」と「x2」の間の文字にも特に規則性はありません 気持ち的には [^(a.*?x)]*? を削除すればいいのかな。って思ってやってみましたが 上手くいきません 置換とか、使わないといけないのかなと思いますが 今さっき解説を読んだばかりであやふやです よろしくお願いします

    • ベストアンサー
    • Perl
  • perlでの入れ子文字列削除

    perlを利用して文字列処理を行う際に、入れ子になった文字列を削除したいのですが、正規表現のうまいやり方が思い浮かびません。 例としましては 今日は雨(雪ではない(この辺の処理に困っている))が降っている。 という文章を 今日は雨が降っている。 と処理できるようにしたいです。 $data =~ s/(.*?)//g; $data =~ s/)//g; というやり方では、3重以上になった時の処理ができません。 できれば何重になっても可能な方法をご教示ください。

    • ベストアンサー
    • Perl
  • Perlの正規表現

    Perlの正規表現である文字列に文字列STRINGが含まれないようにするには ^(?!.*STRING).+$ と書くとググったら出てきました. ですが,?!について詳しいことまで書いてるサイトはありませんでした. ?!は具体的にはどのようなことをするのでしょうか?

  • Perlの正規表現で文字の抽出

    Perlを勉強しているのですが正規表現についてよくわからないので教えてください。 $text="【件名】本文" とあるときに、【】で囲まれた文字列(【】も含む)を抽出し、$textに戻したいのですがどうすればいいのでしょうか? ($textの中身を【件名】としたいのです) よろしくお願いします。

    • ベストアンサー
    • Perl
  • VB.NET 文字列において特定の文字を半角に変更

    こんにちは。 Framework2.0で開発しています。 文字列 = "ABCDEF" 特定文字 ="CD" または "A" を定義した場合、正規表現を用いて文字列"ABCDEF"の中の特定文字"CD" または "A" を半角に変更するには、どのような正規表現のパターンを記述すればよいのでしょうか? ご存知の方がいらっしゃいましたらお教え願います。

  • awk等を用いて、スペースで区切られた特定の文字の次の引数を取得する

    awk等を用いて、スペースで区切られた特定の文字の次の引数を取得したいです。 具体的には cat text1 Monday Tuesday Wednesday Thursday Friday Saturday Sunday cat text2 Tuesday Wednesday Thursday Monday Saturday Sunday Friday とあるときに 常に"Thursday"のあとを抜き出したいです。 text1ならFriday text2ならMonday という感じです。 抜き出すもとのファイルは、スペースのみで区切られており ファイルの大きさはランダムです。 よろしくお願いします。

  • 全角で囲まれた文字列の抽出をしたい。

    全角で囲まれた文字列の抽出をしたい。 phpコマンド preg_match($pattern,$str,$match)を使い $str = "で検索した結果 1~10件目 / 約14件 - 0.09秒"; を 「約」と「件」で囲まれた「14」という文字列を抽出したいのですが $patternの正規表現がわかりません。 教えてください。

    • ベストアンサー
    • PHP