0

我希望使用正则表达式将文本数据文件转换为 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
  • 不要介意前 2 行和 $PAGE 01 行。(我将在应用正则表达式之前拆分文件)

一段时间以来,我一直在为此烦恼,如果有更多正则表达式经验的人可以帮助我或为我指明正确的方向,我将不胜感激!

亲切的问候,

斯坦尼

4

3 回答 3

1

如果我说得对..这就是你要找的

正则表达式:"\\^(GLOBAL.*?)(?=[\n\r]+)(.*?)(?=\\^|$)"

为了更笼统,您可以使用"\\^(.*?)(?=[\n\r]+)(.*?)(?=\\^|$)"

代替:<$1><$2></$1>

单行选项一起使用

于 2013-02-04T11:05:58.003 回答
1

您需要^在正则表达式中转义以匹配 a^因为它表示正则表达式中字符串的开头。

我认为所需的正则表达式\^(GLOBAL|FIELD)\s([A-Z0-9]+)匹配GLOBALFIELD后跟空格,后跟任意长度(至少一个)的大写字母或数字序列。将匹配替换为<$1>$2</$1>

于 2013-02-04T09:49:54.583 回答
0

I think I found the answer:

((GLOBAL|FIELD)\s([A-Z0-9]+))(.+?)(?=\^)\^

Replace:

<$2_$3>$4</$2_$3>

..this gives me almost exactly what I need.

Greetings

于 2013-02-04T11:57:14.087 回答