人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[正規表現]特定文字列以前or以降を取り出すにはどう書けばいいのでしょうか?

例1:特定文字列以前を取り出す。
元文字列 "abcdefghijklmnopqrstuvwxyz"
特定文字列 "ghi"
期待する結果 "abcdef"

例2:特定文字列以降を取り出す。
元文字列 "abcdefghijklmnopqrstuvwxyz"
特定文字列 "stu"
期待する結果 "vwxyz"

●質問者: joemoriyama
●カテゴリ:コンピュータ インターネット
✍キーワード:文字列 正規表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● しおり
●50ポイント

正規表現といっても色々ありますが、Ruby ならこんな感じ。

#!/usr/local/bin/ruby

md = /ghi/.match('abcdefghijklmnopqrstuvwxyz')
p $`# => "abcdef"
p md.pre_match# => "abcdef"
p $'# => "jklmnopqrstuvwxyz"
p md.post_match# => "jklmnopqrstuvwxyz"
◎質問者からの返答

すいません、言語を書き忘れてしまいました。残念ながらRubyはよくわかりません。

現在、perlで

$string = 'abcdefghijklmnopqrstuvwxyz';

$result1 = substr($string, 0, index($string, 'ghi'));

$result2 = substr($string, index($string, 'ghi') + length('ghi'));

こんな感じでやっているのですが、もっとすっきりできないものかと思って質問しました。


2 ● GEN111
●84ポイント

Perl ならこうとか。

区切り文字列が複数あらわれる場合の扱いにもよりますが。

$str = "abcdefghijklmnopqrstuvwxyz" ;

$str =~ /(.*)(?=ghi)/ ;
print "$1\n" ;

$str =~ /(?<=stu)(.*)/ ;
print "$1\n" ;
◎質問者からの返答

おお、すばらしい。

とりあえず区切り文字列が複数あらわれる場合は考慮していないので、これでいけそうです。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ