Как я могу выяснить, какой формат или функции моего кода регулярного выражения хочет этот аддон Firefox? - PullRequest
1 голос
/ 23 ноября 2011

Я пытаюсь написать плагины для расширения (Anticontainer) для плагина FireFox (DownThemAll).

Плагины представляют собой файлы .json и используют регулярные выражения.

Проблемы обычно возникают в моем коде в области поиска. Если возникает проблема, я не получаю уведомления, она просто не импортируется.

Например, Это действительно импорт;

"finder": "<img src=\"(resized/([^\"]+))\"", 

Это не импортирует;

"finder": "src="(http://.*.cdn..*.com.*-\d+x\d+.jpg)"\Wclass="", 

Оба соответствуют правильно в http://gskinner.com/RegExr/

Это почти всегда проблема с областью поиска. Я могу взять регион поиска из плагина, который импортирует, и поместить его в тот, который не импортирует, и он импортирует.

This is the error that firefox gives me
Error: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIJSON.decodeFromStream]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://dtaac/plugins.jsm :: loadPluginFromStream :: line 211" data: no] 

Это указывает на этот файл; https://github.com/downthemall/anticontainer/blob/master/modules/plugins.jsm

Просто я не могу понять, что требуется FireFox, DownThemAll, Anticontainer, JSON и / или JSM в их RegEx.

Кто-нибудь может направить меня к методу определения того, что эта чертова штука не нравится в некоторых моих кодах регулярных выражений.

Я заставил его работать. Я исправил плагин для загрузчика альбомов в facebook, но это занимает много времени, чтобы постоянно переписывать регулярное выражение и импортировать его, пока оно не примет его.

Предложения о том, как выяснить, что может и не может быть в моем регулярном выражении, и что требует это расширение от регулярного выражения для импорта.

1 Ответ

1 голос
/ 23 ноября 2011

Похоже, ваша проблема не в синтаксисе регулярных выражений, а в строково-буквальном синтаксисе. Это:

src="(http://.*.cdn..*.com.*-\d+x\d+.jpg)"\Wclass="

... является допустимым регулярным выражением, но когда вы помещаете его в строковый литерал, вы должны экранировать кавычки:

"src=\"(http://.*.cdn..*.com.*-\d+x\d+.jpg)\"\Wclass=\""

... и, согласно этой ссылке , вам также необходимо избегать других обратных и косых черт:

"src=\"(http:\/\/.*.cdn..*.com.*-\\d+x\\d+.jpg)\"\\Wclass=\""

Наконец, если \W рядом с концом должен соответствовать пробелу, вы должны использовать \s вместо этого. Многие считают, что \W означает пробел, но на самом деле это эквивалентно [^\w]: любой символ, который не является символом слова. В данном случае использование \W не является ошибкой, но я хотел убедиться, что вы знаете разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...