我试图只匹配"的第一个实例:"在一行中可能有一次或多次出现的文本。
示例内容:
title: This is a title: This is a subtitle
所以我只想匹配":"在" title"
之后我试过这个:
/(: ?)/
但它仍与所有人相匹配。
我知道它需要非贪心使用?但到目前为止,似乎只是非贪婪,同时仍然匹配给定行中的多次出现。
感谢您的帮助:)
以下是我正在解析的内容的示例:
root
parent
title: The title with (: ) to be ignored
text: A line of text
所以":"很可能会在第一个":"之前加上缩进和单词。可能是什么。
所以这似乎有效:
$text = " title: Page: Website - Tagline";
preg_match("~^(?:[\t ]+)*(?:([\w]+)(?:: ){1})([\s\S]+)$~", $text, $matches);
$matches[1]; // title
$matches[2]; // Page: Website - Tagline
答案 0 :(得分:0)
试试这个:
^[^:]*(:).*
所以^标记了行的开头,
[^:] * - 看起来直到它看到冒号
(:) - 匹配行
中的第一个冒号。*(可选) - 行的其余部分