我有一个正则表达式来搜索日志。但是,它适用于搜索,但不适用于PHP。我对正则表达式不好,并且不知道它有什么问题。
他们的正则表达式"\\] ([a-zA-Z _]+) \\(.*to ([a-zA-Z _]+) \\(.*\\$([0-9,]+)"
Warning: preg_match_all() [function.preg-match-all]: Delimiter must not be alphanumeric or backslash
我需要帮助才能在PHP中使用它。
日志的一个例子是:
[2013/12/28 - 15:16:22] Zack Willson (IP: 127.0.0.1) has sold their house (ID 4681) to William Hill (IP: 127.0.0.1) for $13,700,000.
我需要获得第一个球员的名字,第二个球员的名字以及花费的金额。如果该正则表达式不易转换或任何问题可能。
答案 0 :(得分:1)
这个正则表达式怎么样:
\]\s+([a-zA-Z\s_]+)\s+\(.*\)\s+to\s+([a-zA-Z\s_]+)\s+.*\)\s+for\s+(\$[0-9,\s_]+)\s?+
在PHP中它将是:
// Test data from the log.
$log_data = "[2013/12/28 - 15:16:22] Zack Willson (IP: 127.0.0.1) has sold their house (ID 4681) to William Hill (IP: 127.0.0.1) for $13,700,000.";
// The 'preg_match' statement.
preg_match('/\]\s+([a-zA-Z\s_]+)\s+\(.*\)\s+to\s+([a-zA-Z\s_]+)\s+.*\)\s+for\s+(\$[0-9,\s_]+)\s?+/is', $log_data, $matches);
// Output the '$matches'
echo '<pre>';
print_r($matches);
echo '</pre>';
结果将是:
Array
(
[0] => ] Zack Willson (IP: 127.0.0.1) has sold their house (ID 4681) to William Hill (IP: 127.0.0.1) for $13,700,000
[1] => Zack Willson
[2] => William Hill
[3] => $13,700,000
)