Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Я использовал следующее с большим успехом:
(["'])(?:(?=(\\?))\2.)*?\1
Это поддерживает вложенные кавычки также.
Для тех, кто хочет более глубокое объяснение того, как это работает, вот объяснение от пользователя ephemient:
([""'])
соответствуют кавычке;((?=(\\?))\2.)
, если обратная косая черта существует, пожрите ее, и происходит ли это, соответствуйте символу;*?
соответствие много раз (нежадно, относительно не едят заключительную кавычку);\1
соответствуют той же кавычке, которая была использованием для открытия.
echo 'junk "Foo Bar" not empty one "" this "but this" and this neither' | sed 's/[^\"]*\"\([^\"]*\)\"[^\"]*/>\1</g'
Это приведет к:> Нечто Bar<> <>, но this<
Здесь я показал строку результата между> < для ясности, также с помощью нежадной версии с этим sed управляют, чтобы мы сначала вывели спам прежде и после этого ""и затем заменили это частью между" "и окружили это> <.
Эта версия
средства управления, отслеживающие в обратном порядке
/(["'])((?:(?!\1)[^\\]|(?:\\\\)*\\[^\\])*)\1/
Я пошел бы для:
"([^"]*)"
[^ "] regex для любого символа кроме' " '
причина, я использую это по не жадный многие, оператор - то, что я должен продолжать искать это только, чтобы удостовериться, что я получаю его корректный.
В целом следующий фрагмент регулярного выражения - то, что Вы ищете:
"(.*?)"
Это использует нежадное *? оператор для получения всего до, но не включая следующую двойную кавычку. Затем Вы используете определенный для языка механизм для извлечения подобранного текста.
В Python, Вы могли сделать:
>>> import re
>>> string = '"Foo Bar" "Another Value"'
>>> print re.findall(r'"(.*?)"', string)
['Foo Bar', 'Another Value']