Регулярное выражение: соответствует любому знаку пунктуации, кроме. а также _

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

26
задан Abe Miessler 19 October 2010 в 23:44
поделиться

3 ответа

Используйте Regex Subtraction

[\p{P}-[._]]

Вот ссылка на документацию .NET Regex (я не уверен, что другие разновидности поддерживают это) ... http://msdn.microsoft.com /en-us/library/ms994330.aspx

Вот пример C #

string pattern = @"[\p{P}\p{S}-[._]]"; // added \p{S} to get ^,~ and ` (among others)
string test = @"_""'a:;%^&*~`bc!@#.,?";
MatchCollection mx = Regex.Matches(test, pattern);
foreach (Match m in mx)
{
    Console.WriteLine("{0}: {1} {2}", m.Value, m.Index, m.Length);
}

Объяснение Шаблон - вычитание класса символов. Он начинается со стандартного класса символов, например [\ p {P}], а затем добавляет класс символов вычитания, например - [._], который говорит, что нужно удалить. а также _. Вычитание помещается внутри [] после стандартного класса кишок.

31
ответ дан Les 19 October 2010 в 23:44
поделиться

Ответы пока не относятся ко ВСЕМ пунктуации. Это должно сработать:

(?![\._])\p{P}

(Пояснение: Отрицательный прогноз, чтобы убедиться, что ни ., ни _ не сопоставлено, а затем совпадает с любым символом пунктуации Юникода.)

15
ответ дан Lucero 19 October 2010 в 23:44
поделиться

Вот кое-что немного проще. Не слова или пробел (где слова включают A-Za-z0-9 и подчеркивание).

[^\w\s.]
9
ответ дан Ken Richards 19 October 2010 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: