電子書籍の厳選無料作品が豊富!

よろしくお願いします。

「abcdefghijklmn」
このような文字列から
dとjので囲まれた文字列「defghij」を
抜き出したい場合はどうすれば良いでしょうか?

正規表現を使用するのでしょうか?

便利な関数や方法がありましたら教えてください。
お願いいたします。

A 回答 (4件)

#1のtokuseです。


実は先に言っておきますとPHPは普段使っていないので、正しくは無いかもしれません。ごめんなさい。
でも関数を調べて回答してみます。

ひとつの文字列からいくつあるか分からないd*jを抜き出すことになるので、まずは受け皿になる変数は配列にしておきましょう。

その上で、jでsplitします。jがなければ$str_listにはFALSEが入るようです。jで切るときにaajbbbjccならば、aaとbbbとccの三つのデータに切り分けられることを押さえておきます。

次にラストを除くすべての$str_listの要素においてd*を検索して、合ったら最後にjを付けて検索結果の配列に入れていく。
これで要望を満たせるような気がしますが、如何でしょうか?
    • good
    • 0

>「abcdefghijklmn abcdxxxxxjklmn」


>このような文字列から
>dとjので囲まれた文字列「defghij」と「dxxxxxj」を

普通に正規表現を使用すると
「defghijklmn abcdxxxxxj」になってしまいますよね。

処理したい文字列がサンプルのように、間にスぺースがあるなど、決まった法則があるなら方法があるでしょうが、そうでないなら正規表現では難しいのではないでしょうか。

#1の方が回答されているように、スマートではありませんが、strstrや strposで先頭から順に評価していくらいしか思いつきません。
    • good
    • 0

'd*j'のパターンで検索するのが早いと思います。


'd*j'は正規表現って・・・
result = ereg('(d)*(j)', $mojiretsu, $hairetsu);
だったかな?
正規表現が正しければ$hairetsuに見つかったパターンが
配列として入ってるはず。
本かネット見ながら試してみて下さい。
    • good
    • 0

関数で書くとすれば、


文字列から"d"の位置を調べて、
その位置以降の文字列だけを抜き出す。
新しく抜き出した文字列から
"j"の位置を探し、その位置前までの文字列を抜き出す。
こんな方法もあると思います。

ところで言語は何をお使いですか?

この回答への補足

言語はPHP4です。
よろしくお願いします。

補足日時:2003/06/06 08:25
    • good
    • 0
この回答へのお礼

補足です。お礼の欄に書いてしまってすみません。

dからjの文字列を抜き出すのは
正規表現を使用することでとりあえず実現できました。

ですが下記の場合にどうするか
わからなくて困っています。

「abcdefghijklmn abcdxxxxxjklmn」
このような文字列から
dとjので囲まれた文字列「defghij」と「dxxxxxj」を
抜き出したい場合です。

よろしくお願いします。

お礼日時:2003/06/06 13:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!