freepascal正则表达式替换

2024-01-06

有没有一种简单的方法可以在 FreePascal/Lazarus 中进行 RegExp 替换?

四处寻找,我发现我可以相当容易地进行匹配,但我正在努力寻找进行搜索和替换的函数。

我想要实现的目标如下。

  • 我有一个 XML 文件加载到 SynEdit 组件中。
  • XML 文件在开头有一个声明
  • DTD 保存在单独的文件中。
  • 我不想将两者合并到一个文件中,但我确实想在编辑 XML 时对其进行验证。
  • 我正在将 XML 读入字符串变量,并且希望将 DTD 插入到临时字符串变量中的 XML 内容之间(以创建具有自包含 DTD 的兼容 XML),该变量可以进行解析和验证。

所以基本上我有:

<?Line1?>
Line2
Line3

我想进行正则表达式类型搜索,并将 '' 替换为 '\and

<?Line1?>
<![DTD
INFO WOULD
GO HERE
!]
Line2
Line3

例如在 PHP 中我会使用:

preg_replace('/(<\?.*\?>)/im','$1
<![DTD
INFO WOULD
GO HERE
!]',$sourcestring);

但 FreePascal / Lazarus 似乎没有一组等效的正则表达式函数 - 只是一个简单/基本的正则表达式匹配函数。

或者是否有一种不使用正则表达式的更简单的方法 - 我不想假设声明始终位于第 1 行的正确位置 - 只是让事情变得复杂。

Thanks,

FM


据我所知,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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

freepascal正则表达式替换 的相关文章

  • 使用正则表达式匹配非单词字符但不匹配笑脸

    我有一个 Java 程序 它应该从字符串中删除所有非字母字符 除非它们是笑脸 例如 或 或 P 与相反的搭配非常容易 a zA Z P但我不知道如何否定这个表达式 由于我使用的是 String replaceAll 函数 因此它必须采用否定
  • Django 中不捕获可选 URL 元素

    我正在使用 Django 并且想要匹配 URLdomain com w and domain com words 我有一个以下形式的配置行 url r w ords app name views view words view words仅
  • Java用逗号或点和两个小数值验证价格[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 验证必须用点或逗号表示价格值且最多具有两位小数值的字符串的最佳方法和解决方案是什么 RegExp java text DecimalFor
  • Python正则表达式查找所有单个字母字符

    我想找到字符串中单个字母字符每次出现的所有索引 我不想捕获单个字符 html 代码 这是我的代码 import re s fish oil B stack peanut c b words re finditer S s has alpha
  • Scrapy规则如何与爬行蜘蛛一起工作

    我很难理解 scrapy 爬行蜘蛛规则 我有一个例子 它并不像我希望的那样工作 所以它可能是两件事 我不明白规则是如何运作的 我形成了不正确的正则表达式 导致我无法获得所需的结果 好吧 这就是我想做的 我想编写爬行蜘蛛 它将获取所有可用的统
  • 用 ruby​​ 中的数组内容替换字符串?

    String Test string Test array link1 link2 如何替换这样的字符串 输出应该是String link1 string link2 字符串 gsub 可以返回一个枚举器 所以这很简单 string gsu
  • 如何使用正则表达式删除JS中的ul标签和所有包含的内容

    我如何用js删除ul标签和所有内容 例子 div ul li a li li b li ul div 我要这个 div div i use var replace regex 有人可以帮助我吗 诗 只有js 我不能使用Jquery 如果您坚
  • 如何使用 PHP preg_replace 链接 Twitter 用户名?

    我想搜索我的 Twitter 状态对象的文本属性并将 username 替换为 a href username a 到目前为止我尝试过的看起来像这样 pattern 1 a zA Z0 9 replace a href 1 2 a new
  • 禁用特定 java 包的所有 checkstyle 检查

    我有两个包 即 com mydomain abc delegate xyz jaxws 托管 and com mydomain abc xyz jaxws managed 我要求仅对第二个包禁用 checkstyle 因为它们包含自动生成的
  • 使用正则表达式正确替换缩写及其扩展

    我需要更换 HYD 和 HYD 带液压 但正如你所见 HYD 没有得到转换 我究竟做错了什么 console log HYD bHYD b gi test HYD OK console log HYD CYLINDER bHYD b gi
  • 重定向 url 的正则表达式

    是否有一个正则表达式可以匹配这些 url 重定向情况 我已经尝试了几个小时了 我得到的最接近的是 c p 但它不匹配 p or c https regex101 com r ezb0jX 1 https regex101 com r ezb
  • Java:正则表达式,其中每个字符出现0-1次

    Problem 匹配正则表达式的每个字符最多出现一次的单词 该单词必须具有一定的大小 例如 2 5 单词中必须有一个特定的字符 比方说字符 e 我有什么 word matches abcde 2 5 这将匹配字符 a b c d 和 e 出
  • php正则表达式删除数字

    我需要一个正则表达式来删除字符串中的数字 但不删除空格 我目前有 city location UK 0113 Leeds new york sip city 0113Leeds new york city preg replace a z
  • 正则表达式 - 检查输入是否仍有机会匹配

    我们有这样的正则表达式 var regexp one two three 所以只有像这样的字符串 one two three or one two three four or one twotwo three 等会匹配它 但是 如果我们有类
  • UcanaccessSQLException:UCAExc:::3.0.1 表达式的数据类型不是布尔值

    我有一张如下图所示的表格 我需要获取其库尔德语单词包含的所有英语单词 r 所以我不能使用 select English from Table1 where Kurdish like 因为它还接受另一个单词中的子字符串 例如 当我尝试在查询中
  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • Javascript 正则表达式来匹配正则表达式

    我正在研究一个特殊的正则表达式来匹配 javascript 正则表达式 现在我有这个正则表达式工作 i g m 例如 foo match i g m gt foo foo undefined foo i match i g m gt foo
  • JavaScript:是否有完全支持环视的正则表达式库?

    As JavaScript 的内置正则表达式库 https developer mozilla org en US docs Web JavaScript Guide Regular Expressions不支持向后看 http www r
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab

随机推荐

  • 内核、内核线程和用户线程之间的区别

    我不确定我是否完全理解上述差异 所以我想自己解释一下 如果我错了 你可以打断我 内核是创建内核线程的初始代码 内核线程是由内核管理的进程 用户线程是进程的一部分 如果您有一个单线程进程 那么整个进程本身就是一个用户线程 用户线程进行系统调用
  • uint8_t、uint16_t、... 的格式说明符?

    如果我有一个整数变量我可以使用sscanf如下所示 使用格式说明符 d sscanf line Value of integer d n my integer 在哪里可以找到格式说明符uint8 t uint16 t uint32 t an
  • 使用 Instant.parse 解析 2018-05-01T00:00:00 日期时出错

    这是我的代码 我用它来使用 Instant parse 解析字符串 String date 2018 05 01T00 00 00 Instant parse date 并低于错误 java time format DateTimePars
  • withCriteria 两级深度关联 eager fetch grails

    我想急切地加载一个结构 在关联链中有两层深度 大致如下 class TopLevel String name LevelOne levelOne class LevelOne String name LevelTwo levelTwo cl
  • 非标准 HTTP 端口源的 URLConnection FileNotFoundException

    我试图使用 Apache AntGet task http ant apache org manual Tasks get html获取我们公司另一个团队生成的 WSDL 列表 他们将它们托管在 weblogic 9 x 服务器上http
  • SSRS:显示逗号而不是点

    我想在我的报告中使用逗号而不是点 我使用了这种格式 Format Fields True Value F2 但这向我展示了一个点 我怎样才能得到逗号 除了 niktrs 回答之外 还可以通过属性窗口设置报告的语言设置
  • Android Room - 具有附加字段的多对多关系

    I have a Many to Many relationship set up on my Room database denoted by the following diagram 我想向 CrossRef 表添加额外的字段 我的问
  • 在 Google Cloud 上的 Docker 上启动 TensorFlow

    我按照此处的说明在 Google Cloud 上的 Docker 上安装 TensorFlow http tensorflow org get started os setup html docker based installation
  • Snowflake:无法使用阶段(S3)- SQL 编译错误:阶段不存在或未授权

    我在 Snowflake 中创建了一个外部舞台 我也尝试过使用公共存储桶 CREATE OR REPLACE stage DATABASE SCHEMA STAGE NAME url s3 bucket CREDENTIALS AWS KE
  • C# web 和 ftp 爬虫库

    我需要一个库 希望是 C 语言 它可以作为网络爬虫来访问 HTTP 文件和 FTP 文件 原则上 我很高兴阅读 HTML 我想将其扩展到 PDF WORD 等 我对初学者的开源软件或至少对文档的任何指示感到满意 Check NCrawler
  • UsbConnection.bulkTransfer 返回“-1”。这是什么意思?

    根据文档 消极反应意味着失败 如何知道出了什么问题 有关于错误类型的完整文档吗 为了更好奇 我正在尝试通过 USB 上传 arduino sketch 首先 我通过关闭 打开 DTR RTS 然后使用 Stk500 协议发送数据来引起引导加
  • noscript 内容是否加载到 bg 中

    即使启用了 javascript html 标签 noscript 是否会在后台加载内容 我有一个随机图像 每次页面加载时都会由 JS 调用 但我希望抓取所有链接 而不仅仅是当前的随机链接 同时 我不希望页面加载速度减慢 因为图像在后台加载
  • jQuery.remove() - 有没有办法在删除对象后将其取回?

    我在这个问题上基本上有同样的问题 Flash 视频仍在隐藏的 div 中播放 https stackoverflow com questions 1806032 flash video still playing on div that i
  • 为列提供多个索引/标题

    我正在使用 pandas 数据帧 这些数据帧本质上是这样的时间序列 level Date 1976 01 01 409 67 1976 02 01 409 58 1976 03 01 409 66 我想要的是级别列的多个索引 标题 如下所示
  • SQL Server 存储过程中的动态数据源

    我有一个包含多个数据库的 SQL Server 我有一个主数据库 其中包含多个包含实体和 ID 号的表 然后 每个实体都有一个与其所有信息相关的数据库 不是表 而是数据库 例如 如果 MAIN 数据库中的实体的 ID 号为 1 则同一 SQ
  • 如何从iPhone文档目录中读取pdf文件?

    目前我正在iPhone应用程序中工作 我在资源文件夹中有一个pdf文件 本地pdf文件 然后我成功读取了该pdf文件 paper pdf 下面我提到了读取本地pdf文件供您参考 Example CFURLRef pdfURL CFBundl
  • 如何从内存中的流式 zip 文件访问 zipEntry

    我目前正在实现一个电子阅读器库 skyepub http skyepub net 这要求我实现一个方法来检查 zipEntry 是否存在 在他们的演示版本中 解决方案很简单 public boolean isExists String ba
  • Firefox 报告“未找到支持格式和 Mime 类型的视频”

    此代码适用于 mp4 视频 但不适用于 3gp avi and flv files
  • 如果实例变量仍然有引用,Java GC 会销毁对象吗?

    我已经在线阅读了一些 Java 垃圾收集指南 但我仍然有点不清楚 并且想确保我的代码中没有内存泄漏 Java GC 是否会收集失去引用的对象 但其变量仍然具有引用 假设我有 SomeObject public class SomeObjec
  • freepascal正则表达式替换

    有没有一种简单的方法可以在 FreePascal Lazarus 中进行 RegExp 替换 四处寻找 我发现我可以相当容易地进行匹配 但我正在努力寻找进行搜索和替换的函数 我想要实现的目标如下 我有一个 XML 文件加载到 SynEdit