2
A
回答
3
正則表達式理論中絕對沒有任何東西阻止它們被應用於除了字符串以外的其他東西。只是大多數正則表達式引擎實現不允許這樣做。
但是,如果有一個正則表達式引擎,允許你治療字符串作爲未編碼的8位數據(有時稱爲BINARY
,8BIT
或ASCII-8BIT
),則可以使用該發動機解析面向字節的二進制數據。
Ragel是專門爲解析二進制協議而設計的狀態機編譯器。你用一個高級(類似於regexp的)DSL編寫你的狀態機,然後Ragel將它編譯成你的目標語言--Ragel目前支持C,C++,Objective-C,D,Java和Ruby。
大多數函數式編程語言都具有強大的模式匹配功能,可以直接融入語言本身。這些設施可用於模式匹配二進制數據。其中一個例子是Erlang對building and pattern matching binary data structures的支持。
OMeta是一種模式匹配和模式轉換語言,基本上是類固醇上正則表達式的超集。它不僅支持字符串的匹配,還支持數組和整數列表以及任意對象的匹配。
3
你可以爭辯說,語法是一種形式的正則表達式,它比僅僅是字符串更復雜。原則上,您可以在其他標記上設計正則表達式,而不僅僅是字符。作爲一種選擇,您可以爭辯說,Unicode的正則表達式就是這樣一種生物 - 它當然不像經典正則表達式那樣匹配簡單的字節。
3
即使「原子」不是字符,也可以使用普通的上下文無關語法分析器生成器(例如Yacc/Bison)生成常規語言分析器。通過掛接掃描器功能,您可以使語法解析「任何東西」,而不管它是否是字符串。
另一件事是,在邏輯領域,有「時間邏輯」,如LTL和CTL,它們基本上是「事件」正則表達式的子集。 LTL中的邏輯公式通常被轉換爲有限狀態自動機。
相關問題
- 1. 正則表達式的正則表達式的Java字符串
- 2. 正則表達式(正則表達式)的子字符串
- 3. 正則表達式正則表達式匹配字符串
- 4. Javascript正則表達式 - 正則表達式拆分字符串
- 5. 正則表達式,通過字符串或非單詞字符
- 6. 正則表達式非ASCII字符
- 7. 非重複字符正則表達式
- 8. 正則表達式則表達式匹配的字符串
- 9. 字符串模式,正則表達式
- 10. (=字符串)的正則表達式
- 11. unicode字符串的正則表達式
- 12. 正則表達式的字符串
- 13. 正則表達式的字符串
- 14. Mathjax的正則表達式字符串
- 15. 正則表達式Scala的字符串
- 16. 正則表達式的字符串
- 17. C#正則表達式/「的字符串
- 18. PHP字符串的正則表達式
- 19. Oracle正則表達式的字符串
- 20. 字符串的正則表達式
- 21. 正則表達式的字符串
- 22. Java的正則表達式字符串
- 23. 字符串使用正則表達式替換正則表達式字符類
- 24. Perl正則表達式用正則表達式的子串替換字符串
- 25. 正則表達式來標識一個非數字字符串
- 26. 非字符串序列的正則表達式
- 27. 用字符串表示正則表達式還是不用字符串表達正則表達式?
- 28. 正則表達式匹配字符串
- 29. 字符串替換正則表達式
- 30. 字符串正則表達式
你能定義LTL和CTL嗎? – 2009-02-27 11:33:35