轻量级正则表达式解析器

2024-03-19

我想使用正则表达式解析器来帮助 C 应用程序中的一些字符串处理。我理想地寻找轻量级和开源的东西。目标平台是嵌入式系统,因此我们希望尽可能节省内存消耗。我在网上找到了许多选项,但想知道是否有人可以提出可能在这种特定情况下有所帮助的其他建议。

非常感谢,


闪烁体 http://www.scintilla.org/,一个开源文本编辑器组件,使用Ozan S. Yigit 的 RE 发动机 http://www.cs.yorku.ca/~oz/

选择它是因为它属于公共领域(因此没有阻碍许可证)并且非常轻量级。但它有点有限......就其价值而言,使用稍微更现代的代码(转换为 C++,但将其转换回 C 应该不会很复杂)以及我自己制作的一些小扩展(支持 \d \s \w 等)。

有一些替代方案,例如Henry Spencer 的正则表达式库 http://www.arglist.com/regex/.

想一想,Lua http://www.lua.org/正则表达式引擎(在字符串库、gsub 实现等中)可能又快又小,就像语言本身一样。它有其怪癖和局限性,但非常有用。

副业项目LPeg http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html可以成为 RE 的一个有趣的替代品,仍然轻量级但功能强大。

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

轻量级正则表达式解析器 的相关文章

  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 如何从不同的线程访问控件?

    如何从创建控件的线程以外的线程访问控件 避免跨线程错误 这是我的示例代码 private void Form1 Load object sender EventArgs e Thread t new Thread foo t Start p
  • 无法将参数从 `const char *` 转换为 `char *`

    鉴于此代码 void group build int size std string ips Build the LL after receiving the member list from bootstrap head new memb
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 使用正则表达式反转匹配[重复]

    这个问题在这里已经有答案了 使用 PCRE 如何构造一个仅在字符串是时才匹配的表达式not成立 如果我使用 grep 我没有 我会想要 v 选项 一个更具体的例子 我希望我的正则表达式能够匹配 if 字符串foo is not在字符串中 所
  • 模板与非模板类,跨编译器的不同行为

    我在一些应用程序中使用编译时计数器 它确实很有用 昨天我想用 gcc 编译一个程序 我之前使用的是 msvc 并且计数器的行为在模板类中发生了变化 它在模板类中不再工作 过于简化的代码 Maximum value the counter c
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 从 C# 调用时无法识别 Powershell 命令

    这是这个的延续Question https stackoverflow com questions 66280000 powershell object returns null 66280138 noredirect 1 comment1
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • JSF 页面未呈现为 HTML

    我正在尝试运行一个非常基本的 JSF 页面 使用 Websphere 7 0 作为服务器 因此我尝试坚持使用 JSF 1 2 浏览器不渲染 html 我的意思是它只是显示所有 html 代码 包括 doctype 等 我的第一个猜测可能是它
  • Codeigniter 分页链接转到 404 Page Not Found

    我有这个与搜索结果分页 http www andyhawthorne co uk how to paginate search results with codeigniter 实施到我的 CI 项目中 但是我无法让我的分页链接转到下一页
  • 什么时候适合使用CacheItemRemovedCallback?

    我有一个每天更新一次的大型数据集 我正在缓存对该数据进行昂贵查询的结果 但我想每天更新该缓存 我正在考虑使用 CacheItemRemovedCallback 每天重新加载我的缓存 但我有以下问题 是不是可以在我过期之前调用 CacheIt
  • Android 中的噪音消除是如何工作的?

    我碰到this http www talk3g co uk showthread php 7655 Google Nexus One Noise Cancellation Microphone win相对较旧的帖子 描述了 Nexus On
  • Django TestCase 测试顺序

    如果测试类中有多个方法 我发现执行顺序是按字母顺序排列的 但我想自定义执行顺序 如何定义执行顺序 例如 testTestA 将先于 testTestB 加载 class Test TestCase def setUp self def te
  • Python:在一行中拆分、剥离和连接

    我很好奇它们是否是某种蟒蛇魔法 我可能不知道能完成一些无聊的事情 给定行 csvData append join line split strip for x in L 我正在尝试分割一条线 修剪它周围的空白 然后加入 问题是 因为数组是从
  • 关于龙的可怕代码注释是什么?

    这句话被用来警告代码正在做一些严重的特技 我对此的谷歌搜索是空的 但我记得很久以前有人在谷歌上搜索过这个短语 谎言中的龙 龙睡在这里 Bah 这里是龙 http en wikipedia org wiki Here be dragons 最
  • 使用 google API、jQuery 从地理编码中提取 + 4 邮政编码

    我正在 jQuery 的帮助下使用谷歌 API 进行地理编码 以下是我尝试过的代码 jQuery document ready function var geocoder new google maps Geocoder jQuery Ad
  • 在“功能”选项卡上添加背景模式

    我使用的是 Xcode 6 3 我刚刚在功能选项卡上添加了蓝牙背景模式 需要执行一个步骤 即 将 所需的背景模式 键添加到您的 info plist 文件中 然而苹果文档 https developer apple com library
  • BeautifulSoup soup.prettify() 给出奇怪的输出

    我正在尝试解析一个网站 稍后我将在我的 Django 项目中使用它 为此 我使用 urllib2 和 BeautifulSoup4 然而 我却没能得到我想要的 BeautifulSoup 对象的输出很奇怪 我尝试了不同的页面 它有效 输出正
  • 在 Scala 2.10 中获取 java.lang.Class[T] 的 Scala 类型

    我在看scala 反射概述 http docs scala lang org overviews reflection overview html我想知道是否可以使用java lang Class
  • Python numpy 减法没有负数(4-6 给出 254)

    我想减去2gray人脸彼此之间可以看到差异 但我遇到了一个问题 例如减去 4 6 给出 254 而不是 2 或差值 2 print type face
  • 检查 JQuery 中的单选按钮

    我需要以编程方式检查单选按钮的值 该表格有一个id并且输入类型显然有一个名称 但没有 id 到目前为止 我成功运行的唯一代码是 input name my name eq 1 attr checked checked 但我希望能够通过明确提
  • 多个resque工作模式创建额外的进程

    我需要启动 4 个 resque 工作人员 所以我使用了以下命令 bundle exec rake environment resque workers RAILS ENV production COUNT 4 QUEUE VERBOSE
  • Python 中的调用是如何工作的? [复制]

    这个问题在这里已经有答案了 对于我正在开发的一个项目 我正在实现一个链表数据结构 它基于对的概念 我将其定义为 class Pair def init self name prefs score self name name self sc
  • d3.js 中的地理图表

    我正在寻找一些指导或示例如何在 d3 js 中制作地理图表 我需要类似的东西this one https developers google com chart interactive docs gallery geochart在谷歌图表中
  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个
  • 为什么模态/非模态对话框称为模态/非模态?

    我总是很难记住模态对话框还是非模态对话框是否会阻止应用程序其他部分的操作 有谁知道为什么这样称呼他们 使用模式对话框 您可以将应用程序设置为特定的mode 如果您愿意 可以选择不同的 状态 仅接受与该 模式 相关的操作 从而防止对话框之外的
  • 读取文件时 Bash 用户提示

    我试图在 Bash 中逐行读取文件时创建用户提示 我的想法是使用 Gnuplot 逐一绘制各种文件 这是我所拥有的 bin bash echo Enter filename that contains the filenames read
  • 轻量级正则表达式解析器

    我想使用正则表达式解析器来帮助 C 应用程序中的一些字符串处理 我理想地寻找轻量级和开源的东西 目标平台是嵌入式系统 因此我们希望尽可能节省内存消耗 我在网上找到了许多选项 但想知道是否有人可以提出可能在这种特定情况下有所帮助的其他建议 非