使用regex将数据文件转换为xml
本文关键字:转换 xml 文件 数据 regex 使用 | 更新日期: 2023-09-27 17:57:33
我希望使用regex将文本数据文件转换为xml。
这是我将使用的一些示例数据:
^JOB DMR344JAL -C01 -Z"PRT16"
^PAGE 01
^GLOBAL PAGELBL
Pag.
^$PAGE 01
^GLOBAL CMPADDR
COMPANY
Somestreet 1
10000 Somecity
^GLOBAL TELEPHONELBL
Telephone
^GLOBAL TELEPHONE
0000 0/000.00.00
^GLOBAL TELEFAXLBL
Fax
^GLOBAL TELEFAX
0000 0/000.00.00
^GLOBAL ORGNOLBL
Orig.nr.
^GLOBAL ORGNO
^GLOBAL WEBSITE
http://www.internet.com
^GLOBAL EMAIL
e-mail account@internet.com
^GLOBAL SEAT1LBL
Maatschappelijke zetel
^GLOBAL SEAT2LBL
Someaddress
^GLOBAL HANDREG
RPR
^GLOBAL HANDREGNR
Somecity
^GLOBAL TITLE
^GLOBAL TITLE1
FACTUUR
^GLOBAL INVNOLBL
到目前为止,我得到的正则表达式如下:
'^((?:GLOBAL|FIELD)'s(?:[A-Z0-9]+))'r
替换正则表达式如下所示:
<$1>$2</$1>
这给了我以下结果:
^JOB DMR344JAL -C01 -Z"PRT16"
^PAGE 01
<GLOBAL PAGELBL>$2</GLOBAL PAGELBL>
Pag.
^$PAGE 01
<GLOBAL CMPADDR>$2</GLOBAL CMPADDR>
COMPANY
Somestreet 1
10000 Somecity
<GLOBAL TELEPHONELBL>$2</GLOBAL TELEPHONELBL>
Telephone
<GLOBAL TELEPHONE>$2</GLOBAL TELEPHONE>
0000 0/000.00.00
<GLOBAL TELEFAXLBL>$2</GLOBAL TELEFAXLBL>
Fax
<GLOBAL TELEFAX>$2</GLOBAL TELEFAX>
0000 0/000.00.00
<GLOBAL ORGNOLBL>$2</GLOBAL ORGNOLBL>
Orig.nr.
<GLOBAL ORGNO>$2</GLOBAL ORGNO>
<GLOBAL WEBSITE>$2</GLOBAL WEBSITE>
http://www.internet.com
<GLOBAL EMAIL>$2</GLOBAL EMAIL>
e-mail account@internet.com
<GLOBAL SEAT1LBL>$2</GLOBAL SEAT1LBL>
Maatschappelijke zetel
<GLOBAL SEAT2LBL>$2</GLOBAL SEAT2LBL>
Someaddress
<GLOBAL HANDREG>$2</GLOBAL HANDREG>
RPR
<GLOBAL HANDREGNR>$2</GLOBAL HANDREGNR>
Somecity
<GLOBAL TITLE>$2</GLOBAL TITLE>
<GLOBAL TITLE1>$2</GLOBAL TITLE1>
FACTUUR
^GLOBAL INVNOLBL
我究竟是如何获得$1之间的值的????
- 每个字段都有^作为指示符
- 字段后面的行将用于$2
- 不要介意前两行和$PAGE 01。(在应用regex之前,我将拆分文件)
我已经为此伤透了脑筋一段时间了,如果能任何有更多regex经验的人都可以帮助我或为我指明正确的方向!
问候,
斯坦尼
您需要转义正则表达式中的^
以匹配^
,因为它指示正则表达式中字符串的开头。
我认为所需的正则表达式是'^(GLOBAL|FIELD)'s([A-Z0-9]+)
,它与GLOBAL或FIELD匹配,后跟空白,后跟任意长度的大写字母或数字序列(至少一个)。用<$1>$2</$1>
替换匹配项
如果我说对了。。这就是你要找的
Regex:"''^(GLOBAL.*?)(?=['n'r]+)(.*?)(?=''^|$)"
为了更通用,您可以使用"''^(.*?)(?=['n'r]+)(.*?)(?=''^|$)"
替换:<$1><$2></$1>
与单线选项
我想我找到了答案:
((GLOBAL|FIELD)'s([A-Z0-9]+))(.+?)(?='^)'^
替换:
<$2_$3>$4</$2_$3>
这几乎正是我所需要的。
问候