2015-11-21 2 views
-3

Я пытаюсь написать регулярное выражение для замены некоторых проблемных символов в объекте json-файла. Вот короткий - DEMOРегулярное выражение для замены части выражения в объекте json

Я могу написать PHP-код, но я не могу реализовать его в R с str_replace, когда он начинается с {charcters. Любое предложение о том, как улучшить код?

library(stringr) 
json_file <- json_file<- '{"_id":{"$oid":"4f27779008d69a6dba0208f6"},"actor":{"gravatar_id":"92e5c51218f00220e0362c47b2a94b9a","id":NumberInt(228889),"login":"stefankendall","url":"https://api.github.com/users/stefankendall"},"created_at":"2012-01-31T05:09:37Z","id":"1515677813","org":{"url":"https://api.github.com/orgs/"},"payload":{"commits":[{"author":{"email":"[email protected](none)","name":"skendall"},"message":"Made test packages mimic app layout.","sha":"faf1b478f4d98202d4169b6d310812b14ad7f676","url":"https://api.github.com/repos/stefankendall/wendler531-webservices/commits/faf1b478f4d98202d4169b6d310812b14ad7f676"},{"author":{"email":"[email protected](none)","name":"skendall"},"message":"_id is now pulled out of \"get\" responses","sha":"d2087821e865ebebf9ff6e47cffb41dd16c6c871","url":"https://api.github.com/repos/stefankendall/wendler531-webservices/commits/d2087821e865ebebf9ff6e47cffb41dd16c6c871"}],"head":"d2087821e865ebebf9ff6e47cffb41dd16c6c871","push_id":NumberInt(59920001),"ref":"refs/heads/master","size":NumberInt(2)},"public":true,"repo":{"id":NumberInt(3186494),"name":"stefankendall/wendler531-webservices","url":"https://api.github.com/repos/stefankendall/wendler531-webservices"},"type":"PushEvent"}' 
str_replace_all(json_file, "\,{"author[^*]*],\\s*","") 
+0

Что мы должны получить из json-файла? – Arthur

+0

ваше регулярное выражение не имеет смысла ... – Arthur

+0

Он работает нормально. Вот 'str_replace_all (jso n_file, ', \\ {\\ "author [^ \\ *] * \\], \\ s *'," ")' который работает. – user3570187

ответ

0
  1. Вы должны избежать " с или использовать ' в качестве оболочки вместо "
  2. Вы должны бежать управляющие символы дважды в R, то есть \\{, \\^ и особенно \\\\, потому что \ является управляющий символ в R! (Каждый \\ это заменяет по \ и передается в регулярное выражение парсер.
  3. В конце концов, \s должен быть заменен [:space:]

См here.

Вы должны использовать str_replace_all(json_file,',\\{\\"author[^\\*]*\\],\\s*',"") (даже если не делает много смысл для меня ...)

+0

'' \\\\, \ {"author [^ *] *], \\\\ [: space:] * '' вместо '" \, {"author [^ *] *], \\ s * "' – Arthur

+0

Можете ли вы предоставить решение? Я немного новичок в этом. – user3570187

+0

Вы не даете отрывок из json_file в своем вопросе. И регулярные выражения, как известно, ад, чтобы читать, когда вы сами не пишете их. Поэтому я боюсь, что вы должны попробовать. – Arthur

Смежные вопросы