Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Reg表达式-在两个字符串之间拆分两个字符串<;h3>;标签_Regex - Fatal编程技术网

Regex Reg表达式-在两个字符串之间拆分两个字符串<;h3>;标签

Regex Reg表达式-在两个字符串之间拆分两个字符串<;h3>;标签,regex,Regex,我一直在寻找一个reg表达式来将html元素拆分为2个部分。第一个是价格,第二个是下载次数。这是我的HTML,这是我尝试使用的reg表达式。我正在使用scapper程序,所以我不能使用java脚本或jQuery HTML: <h2>$850 / 3Downlaods - Software Name</h2> 重新表达后使用的标记: /$\/\s*/ /\/\ 这应该只返回850。没有美元符号。我被困在如何开始和结束下载的数量。我需要另一套前后正则表达式来获取下载数量

我一直在寻找一个reg表达式来将html元素拆分为2个部分。第一个是价格,第二个是下载次数。这是我的HTML,这是我尝试使用的reg表达式。我正在使用scapper程序,所以我不能使用java脚本或jQuery

HTML:

<h2>$850 / 3Downlaods - Software Name</h2>
重新表达后使用的标记:

/$\/\s*/
/\/\
这应该只返回850。没有美元符号。我被困在如何开始和结束下载的数量。我需要另一套前后正则表达式来获取下载数量。也不包括“下载”一词


如果
中没有其他嵌套的标记(考虑起来更复杂),我使用的程序是OutWit Hub Scapper

,两个
()
捕获组由
/
分隔,应该这样做:

/<h2>\s*\$(\d+)\s*\/\s*(\d+)\s*Downloads.+?<\/h2>/
关于使用正则表达式解析HTML的常见警告适用于此处。只有当您的HTML输入是可预测的,并且在

中没有嵌套标记时,这才可以成功地工作。请尝试以下方法:
(?:.*\$)(\d+(?:\。\d+).*(\d+)(\d+)(::\s*下载。*)

下面是发生的事情:

(?:.*\$)
-捕获并丢弃标记的开头,一直到它在美元符号后找到的第一个数字

(\d+(?:\。\d+)
-捕获美元金额(包括美分)

*
-两个数字之间的任何废话

(\d+)
-下载次数

(?:\s*下载。*)
-标记的其余部分

我希望这有帮助

/<h2>\s*\$([0-9,.]+)\s*\/\s*(\d+)\s*Downloads.+?<\/h2>/