Как я могу создать регулярное выражение, которое включает перевод строки? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть этот код:

Regex regex = new Regex(@"\[see=[^\]]*\]"); 

var list = phraseSources.ToList();

list.ForEach(item => item.JmdictMeaning = regex.Replace(item.JmdictMeaning, ""));

Он удаляет все между "[see" и "]"

Однако я обнаружил, что перед "[see" находится перевод строкии я хотел бы убрать это в дополнение ко всему между "[см." и "]".

Я использовал шестнадцатеричный редактор, и я вижу:

0D 0A 

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

Может кто-нибудь сказать мне, как я могу удалить это плюс все, что находится между "[см." и "]"

1 Ответ

1 голос
/ 21 октября 2019

Вы можете изменить свое регулярное выражение, включив в него возврат каретки (0D, aka \r) и переводы строк (0A, aka \n)

Regex regex = new Regex(@"\[see=[^\]]*\]|\r\n");

Так что теперь оно соответствует чему угодноэто [see=...] или \r\n.

Если вы ожидаете, что любой из них появится в строке сам по себе, вы также можете сопоставить что-то вроде этого

Regex regex = new Regex(@"\[see=[^\]]*\]|[\r\n]");

Это очистит любой \r и \n символов, даже если они появляются отдельно.

Если вы хотите удалить только \r\n, который может появиться перед частью [see=..., тогда это будет делать

Regex regex = new Regex(@"(\r\n)?\[see=[^\]]*\]");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...