正则表达式(正则表达式)导致程序崩溃

时间:2016-09-29 13:03:07

标签: c# regex

我正在使用一个程序,它接受.csv文件并将其转换为.SGM(sgml)文件,该文件符合我们使用的特定架构/ dtd。

不幸的是,进行转换的工具在转换为SGML时会将错误的顺序放在一起,所以我写了一些正则表达式来纠正这个问题。我正在使用名为“高级查找和替换”的程序。用于编写和测试正则表达式(我已经使用多年的优秀程序),我随后在C#中编写了一个Windows应用程序,它做了同样的事情。

所有工作绝对完美,相当于43行的csv文件。除此之外,任何一个程序崩溃(高级查找替换,以及我自己的Windows应用程序)。运行正则表达式的.SGM文件大约是12Kb - 非常小。

它显然不是正则表达式本身,因为它适用于较少的数据行。似乎是当我在CSV文件中添加第43行并将其转换为SGML时,然后运行正则表达式,我的麻烦就开始了。不,它与数据线本身无关。

以下是我的一个接一个运行的正则表达式查询(是的,我是正则表达式的新手,所以它们可能效率不高)。

任何指示或想法会发生什么事?

SearchFor=<iplnom>(.*?)<nom>(.*?)<\/nom>
ReplaceWith=<iplnom><nom>$2</nom>$1

SearchFor=<iplnom><nom>(.*?)<\/nom>(.*?)<mfr>(.*?)<\/mfr>
ReplaceWith=<iplnom><nom>$1</nom><mfr>$3</mfr>$2

SearchFor=<iplnom><nom>(.*?)<\/mfr>(.*?)<mdl>(.*?)<\/mdl>
ReplaceWith=<iplnom><nom>$1</mfr><mdl>($3)</mdl>$2

SearchFor=<iplnom><nom>(.*?)<\/mdl>(.*?)<fds>(.*?)<\/fds>
ReplaceWith=<iplnom><nom>$1</mdl><fds>$3</fds>$2

SearchFor=<iplnom><nom>(.*?)<\/fds>(.*?)<alprtmfr>(.*?)<\/alprtmfr>
ReplaceWith=<iplnom><nom>$1</fds><alprtmfr>$3</alprtmfr>$2

SearchFor=<iplnom><nom>(.*?)<\/alprtmfr>(.*?)<msc>(.*?)<\/msc>
ReplaceWith=<iplnom><nom>$1</alprtmfr><msc>$3</msc>$2

SearchFor=<iplnom><nom>(.*?)<\/msc>(.*?)<uoi>(.*?)<\/uoi>
ReplaceWith=<iplnom><nom>$1</msc><uoi>$3</uoi>$2

SearchFor=<iplnom><nom>(.*?)<\/uoi>(.*?)<esds>(.*?)<\/esds>
ReplaceWith=<iplnom><nom>$1</uoi><esds>$3</esds>$2

SearchFor=<msc><\/msc>
ReplaceWith=

SearchFor=<esds><\/esds>
ReplaceWith=

SearchFor=<osc><\/osc>
ReplaceWith=

SearchFor=<uoi><\/uoi>
ReplaceWith=

SearchFor=<mdl>\(\)<\/mdl>
ReplaceWith=

SearchFor=<alprtmfr><altpn><\/altpn><mfr><\/mfr><\/alprtmfr>
ReplaceWith=

SearchFor=<alprtmfr><altpn><\/altpn><\/alprtmfr>
ReplaceWith=

SearchFor=<mfr><\/mfr>
ReplaceWith=

SearchFor=<fds><\/fds>
ReplaceWith=

0 个答案:

没有答案