regex - 非字符串的正则表达式

标签 regex

我想知道是否存在非字符串的顺序数据的正则表达式之类的东西。

我知道正则表达式本质上归结为 DFA,但我对指定这些 DFA 的高级语言更感兴趣。

最佳答案

在正则表达式的理论中,绝对没有任何东西可以阻止它们被应用于其他东西,而不仅仅是字符串。只是大多数正则表达式引擎实现都不允许这样做。

但是,如果您有一个正则表达式引擎,允许您将字符串视为未编码的 8 位数据(有时称为 BINARY8BITASCII-8BIT ),那么您可以使用该引擎解析字节-面向二进制数据。

Ragel是专门为解析二进制协议(protocol)而设计的状态机编译器。您使用高级(类似正则表达式)DSL 编写状态机,然后 Ragel 将其编译成您的目标语言 - Ragel 目前支持 C、C++、Objective-C、D、Java 和 Ruby。

大多数函数式编程语言都具有强大的模式匹配功能,这些功能直接嵌入到语言本身中。这些工具可用于模式匹配二进制数据。其中一个例子是 Erlang 对 building and pattern matching binary data structures 的支持。 .

OMeta是一种模式匹配和模式转换语言,基本上是正则表达式的超集。它不仅支持字符串的匹配,还支持整数和任意对象的数组和列表的匹配。

关于regex - 非字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/593140/

相关文章:

regex - 哪些字符可以用作正则表达式分隔符?

regex - 如何过滤 tortoisehg (Mercurial) 以不显示包含部分字符串的分支?

php - 如何编写正则表达式来匹配阿拉伯语、英语、数字和空格字符?

c# - 用于验证文件名的正则表达式

Java正则表达式仅字符串开头

ruby - 正则表达式 : between brackets, 以特定字符串开头但不忽略空格

javascript - 检索属性和字符串值,该字符串采用带有属性的标签格式

ruby-on-rails - Rails 正则表达式警告 : character class has '-' without escape

java - 如何在java中用 "XXXXX"替换字符串值?

regex - Groovy 扩展正则表达式语法