Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Вероятно, это:
[^\w\W]
\w - словесный символ (буква, цифра, и т.д.)
\W - противоположность \w
[^\\w\W] - должен всегда перестать работать, потому что любой символ должен принадлежать одному из классов символов - \w или \W
Другой отрывки:
$.^
$ - утверждают положение в конце строки
^ - утверждают положение в начале строки
. - любой символ
(?#it's just a comment inside of empty regex)
Пустое предвидение/позади должно работать:
(?<!)
Лучший стандарт regexs (т.е. никакие предварительные или обратные ссылки), которые отклоняют все исходные данные, (после @aku выше)
.^
и
$.
Это плоские противоречия: "строка с символом перед его началом" и "строкой с символом после его конца".
Примечание: Возможно, что некоторые regex реализации отклонили бы эти шаблоны, как плохо сформировано (довольно легко проверить это ^
прибывает в начале шаблона и $
в конце... с регулярным выражением), но некоторые, которые я проверил, действительно принимают их. Они также не будут работать в реализациях, которые позволяют ^
и $
соответствовать новым строкам.
(?=not)possible
? = положительное предвидение. Они не поддерживаются во всех regexp разновидностях, но во многих.
Выражение будет искать "не", затем искать "возможный" запуск в том же положении (так как предвидения не продвигаются в строке).
Один пример того, почему такая вещь могла возможно быть необходима, - когда Вы хотите отфильтровать некоторый вход с regexes, и Вы передаете regex как аргумент функции.
В духе функционального программирования, для алгебраической полноты, можно хотеть некоторый тривиальный основной regexes как "все, позволяется" и "ничто не позволяется".
Мне это кажется, что Вы принимаетесь за решение проблемы неправильный путь, что точно Вы пытаетесь решить?
Вы могли сделать регулярное выражение, которое ловит все, и инвертируйте результат.
например, в JavaScript:
if (! str.match( /./ ))
но затем Вы могли просто сделать
if (!foo)
вместо этого, как сказал [jan-hani].
Если Вы надеетесь встраивать такой regex в другой regex, Вы могли бы искать $ или ^ вместо этого, или использовать предвидения как [henrik-n] упомянутый.
Но поскольку я сказал, это похоже, "Я думаю, что мне нужен x, но в чем я действительно нуждаюсь, y" проблема.
Почему Вы даже хотели бы это? Не был бы простое, если statment добиваются цели? Что-то вроде:
if ( inputString != "" )
doSomething ()
Это зависит от того, что Вы подразумеваете под "регулярным выражением". Вы имеете в виду regexps на конкретном языке программирования или библиотеке? В этом случае ответ, вероятно, да, и можно обратиться к любому из вышеупомянутых ответов.
Если Вы имеете в виду регулярные выражения, как преподается в занятиях по информатике, то ответ нет. Каждое регулярное выражение соответствует некоторой строке. Это могла быть пустая строка, но это всегда соответствует чему-то.
В любом случае я предлагаю, чтобы Вы отредактировали заголовок своего вопроса сузить, какие виды регулярных выражений Вы имеете в виду.
[^]+
должен сделать это.
В ответе на комментарий aku, присоединенный к этому, я протестировал его с regex тестером онлайн (http://www.regextester.com/), и тем самым предположите, что он работает с JavaScript. Я должен признаться в не тестировании его в "реальном" коде.;)
Ну,
Я не уверен, понял ли я, так как я всегда думал о регулярном выражении пути к строкам совпадения. Я сказал бы, что лучший выстрел, который Вы имеете, не использует regex.
Но, можно также использовать regexp, который соответствует пустым строкам как ^$
или regexp, которые не соответствуют словам/пробелам как [^\w\s]
...
Надежда это помогает!