0

さまざまな方法で見える文字列があります。

$str = "11:00 Team1 - Team2 0-0"
$str = "4' Team1 - Team2 2-1"
$str = "Half time Team1 - Team2 2-1"
$str = "55' Team1 - Team2 3-1"
$str = "Finished Team1 - Team2 2-1"

正規表現を使用して、文字列に "Number+:+Number"、"Number+'" が含まれていて、前の 2 つの組み合わせが含まれていないことを知りたいです。さらに、「Number+-+Number」を抽出したいと思います。

2番目の例でこれを試しました:

preg_match("/[0-9+']/", $str)
4

3 に答える 3

1

必要な正規表現は次のとおりです。

最初の場合: (数値 + : + 数値)

/[0-9]+:[0-9]+/

2 番目の場合: (数値 + ')

/[0-9]+'/

3 番目の場合: (数値 + - + 数値)

/[0-9]+-[0-9]+/
于 2013-03-15T09:56:57.493 に答える
0

すべてのケースに一致する正しい式は次のようになります。

\d+[:'-]\d*

1 つ以上の数字、次にコロン、' またはダッシュのいずれか、次に 0 個以上の数字に一致します。

PHP の例

$str[] = "11:00 Team1 - Team2 0-0";
$str[] = "4' Team1 - Team2 2-1";
$str[] = "Half time Team1 - Team2 2-1";
$str[] = "55' Team1 - Team2 3-1";
$str[] = "Finished Team1 - Team2 2-1";

foreach($str as $s) {
    preg_match_all("/\d+[:'-]\d*/", $s, $res);
    print_r($res);
}

版画

Array ( [0] => Array ( [0] => 11:00 [1] => 0-0 ) )
Array ( [0] => Array ( [0] => 4' [1] => 2-1 ) )
Array ( [0] => Array ( [0] => 2-1 ) )
Array ( [0] => Array ( [0] => 55' [1] => 3-1 ) )
Array ( [0] => Array ( [0] => 2-1 ) )

ライブフィドル

于 2013-03-15T10:01:26.733 に答える
0
$ret = preg_match_all('/^([0-9]+\'|:)/', $str, $matches);
var_dump($ret) // 0 for no match, 1 for match
于 2013-03-15T09:56:44.130 に答える