正規表現は通常の文字列のみに一致するため、提供されたサンプル文字列を分解して、規則性を探してみましょう。
8.00am-10.00Am
8.00PM-11.00AM
8.00PM-11.00AM
8.00PM-11.00AM
10.00pm-11.00pm
だから私はそれを見ることができます:
- 常に 1 桁または 2 桁で始まります。これは次のように表現できます。
\d{1,2}
- この後にドット
.
またはコロンが続きます:
。これは次のように表現できます。[.:]
- これには常に 2 桁が続きます。
\d{2}
- 次に、大文字と小文字を区別しない文字列
AM
またはのいずれか。PM
大文字と小文字を区別しないようにするi
には、パターン全体に修飾子を使用できam
ます。これはキャプチャ グループとして動作し、キャプチャする必要がないため、非キャプチャ グループで式を最適化できます。pm
(am|pm)
(?:am|pm)
- 次にダッシュ
-
、これは文字通り表現できます
- パターンの最初の部分が繰り返されます。
したがって、すべてをまとめると、次のようになります。
/\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i
しかし、待ってください...これにより、件名の文字列の末尾に空白が残ります。そうですね、trim()
これだけでも構いませんが、正規表現を\s*
パターンの先頭に追加することで、これを処理することもできます。
/\s*\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i
したがって、このパターンに一致するものはすべて空の文字列に置き換える必要があります。これは、PHP でpreg_replace()
次のように行うことができます。
$pattern = '/\s*\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i';
$string = 'Uefa Europa League Simulcast 8.00am-10.00Am';
$string = preg_replace($pattern, '', $string);
var_dump($string);
動いているのを見る