试过这个,但没有运气。匹配两个结果(参见示例)。
$lines = preg_grep("/1\.11\.\s\w*/m", $lines);
实施例
1.11 Test
1.11 Test //other paragraph
只需要找到它:
1.11 Test //other paragraph
答案 0 :(得分:0)
您可以改用preg_match()。可选地,preg_match可以在数组中存储匹配的字符序列,然后您可以选择该数组的最后一个元素。
$result = null;
$matches = array();
$pattern = '/1\.11.+/';
$string = "1.11 Test
asd 123
1.11 Test //other paragraph
asda";
$tmp = preg_match($pattern, $string, $matches);
if ($tmp === 1) $result = end($matches);
unset($matches, $pattern, $string, $tmp);
var_dump($result);
您的正则表达式模式也会失败,因为第二个点(\。)永远不会匹配。
答案 1 :(得分:0)
由于您的输入$lines
是一个数组,并且您似乎想要获取以1.11
开头且包含单词然后注释的项目,您可以使用
$lines = preg_grep('~^1\.11\s*\w+\s*//~', $lines);
请参阅IDEONE demo
<强>解释强>
^
- 字符串开头1\.11
- 文字1.11
\s*
- 零个或多个空白符号\w+
- 一个或多个字([a-zA-Z0-9_]
)符号\s*//
- 零个或多个空白符号后跟文字字符序列//