在FreePascal / Lazarus中有一种简单的方法可以进行RegExp替换吗?
狩猎我可以看到我可以相当容易地进行匹配,但是我很难找到执行搜索和替换的功能。
我正在努力实现的目标如下。
基本上我有:
<?Line1?>
Line2
Line3
我想进行RegExp类型搜索并替换'&lt;?Line1?&gt;'替换为'&lt;?Line1?&gt; \ n&lt;![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函数 - 只是一个简单/基本的RegExp匹配函数。
或者是否有一种更简单的方法而不使用正则表达式 - 我不想假设声明始终位于第1行的正确位置 - 只是为了使事情复杂化。
谢谢,
FM
答案 0 :(得分:1)
据我所知,PerlRegEx单元与Free Pascal不兼容。但是你可以使用Free Pascal附带的RegExpr单元。
如果我理解正确,您需要替换替换。这是一个简单的例子,您可以根据自己的需要进行调整。
{$APPTYPE CONSOLE}
{$IFDEF FPC}{$MODE DELPHI}{$ENDIF}
uses
regexpr;
var
s: string;
begin
s := 'My name is Bond.';
s := ReplaceRegExpr(
'My name is (\w+?)\.',
s,
'His name is $1.',
TRUE // Use substitution
);
WriteLn(s); // His name is Bond.
ReadLn;
end.