是否有任何簡單的方法可以將自定義擴展添加到正則表達式引擎 ? (特別是對於Python,但我也會採用 的通用解決方案)。創建自定義擴展到正則表達式引擎
這可能更容易解釋我正在嘗試使用 示例構建的內容。這裏是我想到的用例:
我希望用戶能夠匹配可能包含任意 ASCII字符的字符串。正則表達式是一個很好的開始,但對於我所想到的數據類型來說,這並不足夠。例如,假設我 有一個包含這樣的字符串數據:
<STX>12.3,45.6<ETX>
其中<STX>
和<ETX>
是文本字符 0×02和0×03文/結束的開始。要捕獲這兩個數字,用戶可以方便地在其表達式中指定任何ASCII 字符,這將非常方便。事情是這樣:
\x02(\d\d\.\d),(\d\d\.\d)\x03
凡「\ X02」和「\ X03」的匹配控制字符和 第一和第二場比賽的團體是數字。所以,像 正則表達式只有幾個特定於域的附加組件。
我應該怎麼做呢?這是否是正確的路? 我不得不相信這類問題已經解決,但我最初的 搜索沒有什麼前景。正則表達式具有衆所周知的優勢,保持學習曲線向下。
的幾個注意事項:
- 我不是找一個固定的解析器爲特定的協議 - 它必須是通用和用戶配置
- 我真的不想寫我自己的正則表達式引擎
- 雖然它會很好,但我並不是在尋找「正則表達式宏」,我在這裏爲少數常見表達式創建快捷方式。 (也許是一個後續的問題...)
- 獎勵:你有沒有聽說過任何學術工作,即「創建特定領域的搜索語言」的
編輯:感謝您的答覆,以便到目前爲止,我還沒有意識到Python re
支持任意ascii字符。但是,這仍然不是我想要的。下面是另一個例子是希望得到什麼,我想要的到底是廣度:
假設我有一個包含字符串這樣的數據:
$\x01\x02\x03\r\n
凡123
形式兩個12位整數(爲0x010和0x023)。所以,我怎麼可以添加的語法,使用戶可以用這樣的正則表達式匹配它:
\$(\int12)(\int12)\x0d\x0a
凡\int12
的各拉出12位。如果試圖搜索打包數據,這會很方便。
我想這可能爲你工作:http://stackoverflow.com/a/2759009/1709129只是刪除插入符號 – rbernabe