我有以下用于匹配出生年份的PHP代码:
$pattern = "/20\d\d/";
$exp = "BORN ON: Friday, June 11, 2001 ";
$match = preg_match($pattern,$exp, $matches);
echo $matches[0];
这匹配"2001"
...这就是我想要匹配的 - 出生年份。但这显然是一个解决方案的黑客,如果由于某种原因在$exp
之前还有其他年份可能会遇到问题。
如何包含"BORN ON"
信息以便选出一年?
答案 0 :(得分:1)
试试这个:
'/BORN ON:\s+\w+, \w+ \d+, (20\d\d)/'
答案 1 :(得分:1)
还搜索“BORN ON”并使用捕获组。
$pattern = "/BORN ON.*(20\d\d)\s$/";
$exp = "BORN ON: Friday, June 11, 2001 ";
$match = preg_match($pattern,$exp, $matches);
echo $matches[1];
我将年份放入捕获组中,因为现在它周围有括号,您可以使用$matches[1]
(而不是0)获得此组。另外,我将年份绑定到字符串的末尾(两者之间可能有空格\s
)和$
。
答案 2 :(得分:0)
试试这个:
$pattern = "BORN ON.*/20\d\d/";
从使用示例http://txt2re.com等工具开发正则表达式有时会很有帮助。它可以为您提供用于匹配字符串的确切PHP代码。
答案 3 :(得分:0)
首先,规范化所有输入数据。如果您正在解析的字符串是固定宽度或遵循特定的简单格式,那么请注意并开发一个更适合输入数据的正则表达式。如果您需要快速参考,请查看txt2re。