2016-02-26 47 views
0

我正在使用RegEx结合在线刮取器从网站提取数据。该刮板允许您使用Reguar表达式仅提取部分字符串。从字符串中提取所有号码并使用RegEx将它们合并

我想提取看起来像这样的字符串:

€ 1.250.000 k.k. 
€ 359.000 k.k. 
€ 89.000 v.o.n. 

我想要得到的结果如下:结果需要

1250000 
359000 
80000 

存储为一个数字。

现在我正在使用表达式[\d.]+,但包括句点。如果我从表达式中删除句点,那么句号后面的数字就不会被使用。

有关于此的任何想法?

N.B.我现在用的刮刀是import.io

+0

所有你需要的是取代'\ d +'一个空字符串。在JS中,'str = str.replace(/ \ D +/g,'')'。那对你有用吗? –

+0

刮刀的事情是,我没有使用任何编程语言来查找和替换周期。在scraper中,你可以指定一个RegEx来告诉scraper要提取的字符串的哪些字符。希望澄清一点。 – kirvis

+0

我不知道'import.io'和它的正则表达式的风格,但是你可以改变正则表达式,像这样:'[\ d。] *?\ K \ d +'它应该为你的第一行提供三个匹配。这一切都取决于它是否工作*逐行*或整个文件*。 –

回答

1

有两种方式,我把它们都使用JavaScript的 PHP 语言解释。

第一种方法:

Remove all non-numeric values,那么所有剩下的就是你所需要的:

的JavaScript:

var str = "€ 1.250.000 k.k."; 
 
    str = str.replace(/\D+/g, ''); 
 
document.write(str);

PHP:

$str = "€ 1.250.000 k.k."; 
echo preg_replace("/\D+/", "", $str); 

Online Demo


第二种方法:

摘自字符串所有数字和它们连接起来,使预期的数字:

的JavaScript:

var str = "€ 1.250.000 k.k."; 
 
    str = str.match(/\d/g).join(""); 
 
document.write(str);

PHP:

$matches = array(); 
$str = "€ 1.250.000 k.k."; 
$str = preg_match_all('/\d/', $str, $matches); 
$str = implode("", $matches[0]); 
echo $str; 

Online Demo

+0

感谢您的想法,但在刮板我不能使用任何编程语言来做替换。现在看来,我将不得不刮掉包括句号在内的字符串,并在稍后阶段进行处理。谢谢! – kirvis

相关问题