有没有一种简单的方法可以在FreePascal/Lazarus中进行RegExp替换?
我找到了一些关于如何匹配的信息,但是我很难找到执行搜索和替换的函数。
我的目标如下:
- 我已经将一个XML文件加载到SynEdit组件中。 - XML文件在开头有一个声明。 - DTD保存在一个单独的文件中。 - 我不想将两个文件合并为一个,但我想在编辑时验证XML。 - 我将XML读入一个字符串变量中,并想要在临时字符串变量中在
例如在 PHP 中,我会使用以下代码:
但是对于FreePascal / Lazarus似乎没有等效的正则表达式函数集——只有一个简单/基本的RegExp匹配函数。
或者有没有不使用正则表达式的更简单方法——我不想假定声明总是在正确的位置上的第一行,以免使事情复杂化。
谢谢,
FM
我找到了一些关于如何匹配的信息,但是我很难找到执行搜索和替换的函数。
我的目标如下:
- 我已经将一个XML文件加载到SynEdit组件中。 - XML文件在开头有一个声明。 - DTD保存在一个单独的文件中。 - 我不想将两个文件合并为一个,但我想在编辑时验证XML。 - 我将XML读入一个字符串变量中,并想要在临时字符串变量中在
<?xml version="1.0" encoding="utf-8"?>
和XML内容之间插入DTD(以创建一个符合规范的XML)以便进行解析和验证。<?Line1?>
Line2
Line3
我想进行一个RegExp类型的搜索和替换,将“<?Line1?>”替换为“<?Line1?>\n<![DTD\nINFO WOULD\nGO HERE\n!]”,使其变成:
<?Line1?>
<![DTD
INFO WOULD
GO HERE
!]
Line2
Line3
例如在 PHP 中,我会使用以下代码:
preg_replace('/(<\?.*\?>)/im','$1
<![DTD
INFO WOULD
GO HERE
!]',$sourcestring);
但是对于FreePascal / Lazarus似乎没有等效的正则表达式函数集——只有一个简单/基本的RegExp匹配函数。
或者有没有不使用正则表达式的更简单方法——我不想假定声明总是在正确的位置上的第一行,以免使事情复杂化。
谢谢,
FM
TPerlRegEx
,从阅读周围的内容来看,这似乎是一个非常好的库,但我无法弄清楚或找到有关如何将Delphi库包(我知道这可能不是一个特别正确的术语)集成到Lazarus中的任何文档。有人可以给我一些指针吗? - Fat Monk