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

$text = [[自転車]]に乗った[[男]]がいる

$textから [[ ]] に囲まれた単語だけを抽出する正規表現は
preg_match_all('/\[\[(.*?)\]\]/',$text, $matches)
と書けました。


それでは
$text = [[自転車|バイク]]に乗った[[男]]がいる
から [[ ]] に囲まれていて、なおかつ | が入っている単語を抽出するのはどうすればいいでしょうか
上記の例なら、 自転車|バイク と抽出したいのです。

preg_match_all('/\[\[(.*?\|.*?)\]\]/',$text, $matches)
と書いてみましたが、条件によっては変な抽出の仕方をしてしまいます。


よろしくお願いいたします。


●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:バイク 単語 抽出 正規表現 自転車
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● showyou
●35ポイント

具体的な回答がすぐには書けないですが、

要は

・|の前に]]が来ない

・|の後ろに[[が来ない

ことを条件をすれば良いのでは?


2 ● Mook
●35ポイント

うまくいかないケースというのは、[[××]] が [[×××|×××]]の前にあるケースでしょうか。

であれば、

preg_match_all('/\[\[([^\[]*?\|.*?)\]\]/',$text, $matches);

といった感じで回避できるかと思います。

関連質問


●質問をもっと探す●



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