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

Geany regex to extract data inside and outside parenthesis separately

我有一个不完整的 XML 文件,我正在尝试将其转换为 CSV 以映射到电子表格。要创建 header 我需要在每个 = 之前提取标签并用 ,.

分隔

相反,我需要捕获所有行上 "" 之间的所有内容以匹配 header。

我遇到问题的地方是某些数据字段中有一些 space,这让我在创建锚点时一团糟,而某些字段根本没有数据,只有 "".这是我尝试创建 header.

的两种情况的示例
lvendor="EBL" lxref="1304112" linked="0" ltrnqty="" labeltype="ITEM W/DATE,VENDOR" taxcode="1" foodstamp="false" nonstock="false" detail="true" ars2="false"

我尝试使用的 Geany 正则表达式是:

[=]["](\S+)?["][\s]

在我 运行 进入数据字段中的 space 之前一直有效,但是用 (.+)? 替换 (\S+)? 给我带来了其他问题。我只是不确定如何正确锚定我的正则表达式,或者我是否需要使用捕获组来完成它。

我什至不确定 Geany 是否是这里的正确工具。我在 Arch Linux 盒子上,所以我愿意使用任何可用的工具。

你可以这样做:

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

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

由于您对新工具持开放态度,因此可以在终端中使用 sed:

轻松地将 XML 转换为 CSV
cat file.xml | sed -r 's/\s?\S+=/,/g' | sed -r 's/^,//'