1

ウィキペディアの中かっこのコンテンツを抽出して置き換えようとしていますが、成功しません。

以下の文字列では{{Nihongo|Pang|パン|Pan}}Pang

$text = "Buster Bros, also called {{Nihongo|Pang|パン|Pan}} and {{Nihongo|Pomping World|ãƒãƒ³ãƒ”ング・ワールド|Ponpingu WÄrudo|lead=yes}}, is a cooperative two-player arcade video game released in 1989 by Capcom";

以下のような preg_replace で正規表現の多くの組み合わせを試しましたが、これまでのところ運がありません

$text = preg_replace('/\{\{({^:\|\}}+)\|({^:\}}+)\}\}/', "$2", $text);
4

2 に答える 2

0

私がよく理解していれば、二重中括弧内のリストをリストの2番目の項目に置き換えたいと考えています。これを行うには、次を試すことができます。

$text = preg_replace('/{{[^|]*+\|([^|]++)(?>[^}]++|}(?!}))*+}}/', '$1', $text);

詳細:

{{          # litteral curly brackets (no need to escape them)
[^|]*+      # first item: all that is not a `|` zero or more times
\|          # litteral `|` (must be escaped)
([^|]++)    # second item in a capture group 
(?>         # content until `}}` in a non capturing group (atomic)
    [^}]++  # all characters except `}`
  |         # OR
    }(?!})  # `}` not followed by another `}`
)*+         # repeat the group zero or more times
}}          # litteral `}}` (no need to escape them too)
于 2013-10-22T14:33:42.283 に答える