2010-11-17 27 views
1

我想在Ruby腳本的文本中匹配正則表達式(至少基本的,不是所有可能的類型......)。
這就像一個... \/\^? oh my god... \$?\/[eimnosux]*用於匹配最簡單的Ruby正則表達式的Ruby正則表達式

也許我需要在這裏遞歸正則表達式。

+0

我仍然懷疑它。例如,即使像「hello world」這樣的簡單字符串也可以用作正則表達式。你在尋求某種啓發式嗎? – 2010-11-17 16:51:19

+0

@ alpha-mouse,'\/\ ^? \ $?\/[eimnosux] *'是我想要的基本示例。我想匹配正則表達式,以最簡單的形式放在Ruby源代碼中:'/....../'。不是'%r {}'或'Regex.new(str)'。 – Nakilon 2010-11-17 16:56:04

+3

您需要爲此解析Ruby。想想下面這行代碼:'x = foo/bar * str [/ foo /,1] .to_i'如果沒有根據語法實際解析Ruby代碼,您無法知道第一個斜槓是否應該啓動正則表達式。 – Phrogz 2010-11-17 17:56:20

回答

3

正如我上面評論的,你需要解析Ruby來區分分割斜槓和正則表達式分隔符。但對於最簡單的,簡單的情況下,不用擔心這個,怎麼樣:

regex_match = %r{/(?:[^/\\]|\\.)+/[mgixo]*} 

這就是「正斜槓,後面跟着一個或更多的東西,要麼是不是正斜槓或反斜槓,或者是反斜槓後跟其他東西,最後跟着一個斜槓,並可能有一些正則表達式標誌。「

+0

看起來不錯。需要測試。我認爲它需要用命名組遞歸。 – Nakilon 2010-11-17 19:19:52