php正则表达式获得字符串的中间位置

时间:2014-08-05 08:37:24

标签: php regex web-scraping

我将html页面解析为纯文本,以便查找并获取数值。 在整个html混乱中,我需要找到一个像这样的字符串:

C) Debiti33.197.431,90I - Di finanziamento

我需要数字33.197.431,90(这个数字会在每个html解析请求中发生变化。

有没有正则表达式来实现这一目标?例如:

STARTS WITH 'C) Debiti' ENDS WITH 'I - Di finanziamento' GETS the middle string that can be whatever.

每当我尝试时,我都会得到空洞的结果......对于正则表达式一无所知。 你能帮我么? 非常感谢你。

2 个答案:

答案 0 :(得分:2)

你可以试试下面的正则表达式,

^C\) Debiti\K.*?(?=I - Di finanziamento$)

DEMO

PHP代码将是,

<?php
$mystring = "C) Debiti33.197.431,90I - Di finanziamento";
$regex = '~^C\) Debiti\K.*?(?=I - Di finanziamento$)~';
if (preg_match($regex, $mystring, $m)) {
    $yourmatch = $m[0]; 
    echo $yourmatch;
    }
?> //=> 33.197.431,90

答案 1 :(得分:0)

这应该有效。阅读Want to Be Lazy? Think Twice.

部分
(?<=\bC\) Debiti)[\d.,]+(?=I - Di finanziamento\b)

这是demo

示例代码:

$re = "/(?<=\\bC\\) Debiti)[\\d.,]+(?=I - Di finanziamento\\b)/i";
$str = "C) Debiti33.197.431,90I - Di finanziamento";

preg_match($re, $str, $matches);