2015-01-17 4 views

ответ

3

Если вы пытаетесь извлечь результат из строки, вы можете использовать string-match и match-string:

(let ((s "var myStr = require('ssh2')")) 
    (if (string-match "'\\([^']+\\)'" s) 
     (match-string 1 s))) 

Если вы ищете результирующую строку в буфере, используйте re-search-forward or re-search-backward вместо этого.

+0

steve the kind guy, изменил вопрос, который был неполным. так как я не скажу, что требуемый вызов func обязательно является обязательным ... снова, почему это используется - \\ ([^ '] + \\ .. 2 обратных слэша с обеих сторон? –

+0

Внутренние обратные косые черты необходимы в регулярном выражении для цитирования круглых скобок, используемых для группировки результата. Затем каждая из этих обратных косых котировок цитируется со вторыми обратными косыми чертами, чтобы они не отбрасывались при анализе регулярного выражения. –

+0

Обратные косые черты являются особыми как для строк, так и для регулярных выражений в elisp. '" \\ (. .. \\) "' оценивает строку '\ (... \)', которая в качестве регулярного выражения обозначает группу '...' – phils