Geany正则表达式分别提取括号内外的数据

时间:2018-04-12 04:11:13

标签: regex geany

我有一个不完整的xml文件我试图转换为csv以映射到电子表格。要创建标题,我需要在每个$number = $_GET["number"]; $status = $_GET["status"]; $userIds = $_GET["userId"]; $sql = ""; for($i = 0; $i < count($number); $i++) { if($status[$i] == 1) { $sqlSelect = "SELECT t2.name, t1.fcm, t1.fcm_enabled FROM user AS t1 INNER JOIN number_list AS t2 ON t1.id = t2.user_id WHERE t2.number = '$number[$i]'"; $resultSelect = $conn->query($sqlSelect); if($resultSelect) { while($row = $resultSelect->fetch_row()) { if($row[2] == 1) { sendFCM(array("title" => $row[0] . " is Online", "body" => ""), array("message" => ""), $row[1]); } } } } } 之前提取标签,并使用=分隔。

反过来说,我需要捕捉所有行上,之间的所有内容,以匹配标题。

我遇到麻烦的地方是某些数据字段中有一些空格会让我误解创建锚点,有些字段根本没有数据""这里有一个示例在我试图创建标题的两种情况下。

""

我试过的Geany正则表达式是

lvendor="EBL" lxref="1304112" linked="0" ltrnqty="" labeltype="ITEM W/DATE,VENDOR" taxcode="1" foodstamp="false" nonstock="false" detail="true" ars2="false"

这一直有效,直到我遇到数据字段中的空格,但用[=]["](\S+)?["][\s] 替换(\S+)?会给我带来其他问题。我只是不确定如何正确地锚定我的正则表达式,或者我是否需要使用捕获组来完成它。

如果Geany是正确的工具,我甚至都不肯定。我在一个拱形linux盒子上,所以我可以使用任何可用的工具。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

(\w+)(?==)|"([^"]*)"

这将保存第一个捕获组上的变量名称及其在第二个捕获组上的相应值。

答案 1 :(得分:0)

由于您对新工具持开放态度,因此您可以使用sed在终端中轻松地将xml转换为csv:

cat file.xml | sed -r 's/\s?\S+=/,/g' | sed -r 's/^,//'