例1:特定文字列以前を取り出す。
元文字列 "abcdefghijklmnopqrstuvwxyz"
特定文字列 "ghi"
期待する結果 "abcdef"
例2:特定文字列以降を取り出す。
元文字列 "abcdefghijklmnopqrstuvwxyz"
特定文字列 "stu"
期待する結果 "vwxyz"
正規表現といっても色々ありますが、Ruby ならこんな感じ。
#!/usr/local/bin/ruby md = /ghi/.match('abcdefghijklmnopqrstuvwxyz') p $` # => "abcdef" p md.pre_match # => "abcdef" p $' # => "jklmnopqrstuvwxyz" p md.post_match # => "jklmnopqrstuvwxyz"
Perl ならこうとか。
区切り文字列が複数あらわれる場合の扱いにもよりますが。
$str = "abcdefghijklmnopqrstuvwxyz" ; $str =~ /(.*)(?=ghi)/ ; print "$1\n" ; $str =~ /(?<=stu)(.*)/ ; print "$1\n" ;
おお、すばらしい。
とりあえず区切り文字列が複数あらわれる場合は考慮していないので、これでいけそうです。
ありがとうございました。
すいません、言語を書き忘れてしまいました。残念ながらRubyはよくわかりません。
現在、perlで
$string = 'abcdefghijklmnopqrstuvwxyz';
$result1 = substr($string, 0, index($string, 'ghi'));
$result2 = substr($string, index($string, 'ghi') + length('ghi'));
こんな感じでやっているのですが、もっとすっきりできないものかと思って質問しました。