映画のタイトルとリリース年の文字列があります。タイトル(年)のパターンを検出し、一致する場合はアンカータグで囲みたいと思っています。パターンを見つけてアンカータグをラップするPHP正規表現
ラッピングが簡単です。しかし、映画の名前が何であるかわからない場合、このパターンにマッチする正規表現を書くことは可能でしょうか?
例:
$str = 'A random string with movie titles in it.
Movies like The Thing (1984) and other titles like Captain America Civil War (2016).
The movies could be anywhere in this string.
And some movies like 28 Days Later (2002) could start with a number.';
ので、パターンは常に(大文字で始まる)Title
なり、(Year)
で終了します。これは現在動作しません
if(preg_match('/^\p{Lu}[\w%+\/-]+\([0-9]+\)/', $str)){
error_log('MATCH');
}
else{
error_log('NO MATCH');
}
:
は、これは私がこれまで持っているものです。私はこれで間違っているつもりです
^\p{Lu} //match a word beginning with an uppercase letter
[\w%+\/-] //with any number of characters following it
+\([0-9]+\) //ending with an integer
:私は、これはそれが何をすべきかであることを理解何から?
'([A-Z] {1} [a-z] + \ s?)+ \(\ d + \)'これはあなたが探しているものです。正規表現のパターンを簡単にテストするには、RegExr(http://regexr.com/)を使用してください。 –
すぐに映画のタイトルが始まるかもしれませんか? '1984(1984)'のように映画が完全な数値であれば?これは何か食料調達する必要がありますか? siamのソリューションは、非常に賢いですが、1984年(1984年)は30歳以上の映画です。私はあなたの提供されたサンプルが起こりうる全ての出来事をカバーしていることを確認したいだけです。 – mickmackusa
一方、totoの正規表現は1984年(1984年)は30歳以上の映画であり、164ステップの節約である。私の拡大サンプルよりも優れているようです。 – mickmackusa