Regex preg_match()文本提取

Regex preg_match()文本提取,regex,preg-match,text-extraction,Regex,Preg Match,Text Extraction,我在一个段落中有一个字符串: 今天的格言是:“从昨天学习,为今天而活,为明天而希望。”。重要的是不要停止提问 我需要摘录这句话:“从昨天学习,为今天而活,为明天而希望。重要的是不要停止质疑。” 我不熟悉正则表达式,所以我想在这里得到一些帮助。 我试过: 正如我想象的那样,这是不正常的。任何帮助都将不胜感激。提前谢谢 编辑: 此外,我还需要在字母数字表达式中包含“u”和“-” 例如: $string=“site:'6lczwncsaaaecqkyccsteouaqs9jo7wdrgzvbl',rt

我在一个段落中有一个字符串:

今天的格言是:“从昨天学习,为今天而活,为明天而希望。”。重要的是不要停止提问

我需要摘录这句话:“从昨天学习,为今天而活,为明天而希望。重要的是不要停止质疑。”

我不熟悉正则表达式,所以我想在这里得到一些帮助。 我试过:

正如我想象的那样,这是不正常的。任何帮助都将不胜感激。提前谢谢

编辑: 此外,我还需要在字母数字表达式中包含“u”和“-”

例如:

$string=“site:'6lczwncsaaaecqkyccsteouaqs9jo7wdrgzvbl',rtl:false,挑战:'03AHJ_Vuv_3y7kY-gqacycyzgrzt9ztv_cFQN_F0jEqOGNq0-3qanrsxj18 opj4bbhrqpoisizbbdexvpnvjljltsjoxqqu4wgvgvgrpjjzjj1yxyxjjjjjnju7ix0nj0nj0nj0nj0nj0nj0-fyvcxxxvcxxxxxxxxvcqczzzzzzyy0nj8'”


我需要匹配单词“Challenge”后的字符串。包含下划线和“-”的

这应该可以完成这项工作:

$string = "Today's quote is: 'Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning.'";
preg_match('/.*?:.*?\'(.*?)\'/', $string, $m);
echo $m[1]; // Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning.
编辑2:在OP展示了另一个例子之后。以下是该编辑的解决方案:

$string = "site : '6LcZwNcSAAAAAEcQkyCCSteouAQS9jO7wDrgzvbL', rtl : false, challenge : '03AHJ_Vuv_3y7kY-GQaCyzgrz9ZTv_cFQN_F0jEqOGNq0-3QANrsxJ18oPj4bbhRqPoISIZbqBBdeEXVfpnnVjlTsjoxQugI4j0zB1yRQU1m4wXzFGVRpuRyXJmnJU3d7Ix0nhyO_OBeFCR7v9gXtz_BNN04tSzXxVyvKCExO9I2vcqcIhWJQE8K8'";
preg_match_all('/.*?:.*?\'(.*?)\'/', $string, $m);
var_dump($m);

用于提取为什么不使用substr()?你确定你需要正则表达式吗?你只需要把文本的一部分放在引号里就行了?@Barmar我需要引号里的部分quote@MahmoudElSelimy是否有更多需要提取的字符串示例?@ExplosionPills上面的字符串位于具有类似公式的段落中。所以我需要确保它有“今天的引语是:”在它之前。即使它在一个段落内,它也会起作用。我需要确保is has“”,今天的引语是:“在它之前”。@MahmoudElSelimy“在一个段落内”是非常模糊的,我提供了当前模式的答案
今天的引语是:{匹配此}“
。如果您有其他要求,请告诉我们。我在上面添加了另一个示例。希望有帮助。@Mahmoudelimy看到我的编辑,基本上您可以使用
echo$m[1][0]调用这两个值。
。$m[1][1];
或者像这样做一个
foreach($m[1]as$extracted){echo$extracted.
”;)
非常感谢您能及时了解我的最新情况。我尝试了您的示例,对其进行了一些调整,效果非常好。我所做的是:preg_match('/challenge.*?:.*?\'('-challenge.*?.*?)/,$response,$matches);然后我删除了单词“challenge:”和使用str_replace的引号。
$string = "site : '6LcZwNcSAAAAAEcQkyCCSteouAQS9jO7wDrgzvbL', rtl : false, challenge : '03AHJ_Vuv_3y7kY-GQaCyzgrz9ZTv_cFQN_F0jEqOGNq0-3QANrsxJ18oPj4bbhRqPoISIZbqBBdeEXVfpnnVjlTsjoxQugI4j0zB1yRQU1m4wXzFGVRpuRyXJmnJU3d7Ix0nhyO_OBeFCR7v9gXtz_BNN04tSzXxVyvKCExO9I2vcqcIhWJQE8K8'";
preg_match_all('/.*?:.*?\'(.*?)\'/', $string, $m);
var_dump($m);