Как заменить специальные символы с помощью регулярных выражений?
-
16-09-2019 - |
Вопрос
Как заменить специальные символы с помощью регулярных выражений?Под особыми я подразумеваю те символические символы, которые иногда появляются в тексте.
Например, в тексте ниже я хочу удалить пузырь, который находится в начале каждой строки.
Паспортные данные
Name as on passport
Relationship
Passport Number
Date of Issue
Expiry Date
Place of Issue
Отредактированный вопрос :Извините, пузырь в начале строки больше не виден.После отправки вопроса stackoverflow удалил этот специальный символ.
Кто-нибудь знает, как заменить эти специальные символы?Я не хочу заменять символы типа #, @ или !.Они тривиальны и могут быть набраны с клавиатуры.
Извините, я не знаю, как вставить эти специальные символы в мой вопрос.Я попытаюсь объяснить.В файле Word мы ставим маркеры перед текстом.Я хочу заменить символы, отображающие такие символы.У меня есть несколько текстовых файлов, которые содержат символы, похожие на bubble .
Наконец, я нашел решение.Это регулярное выражение работает для меня
([^(A-Za-z0-9)+| | | |'|"|#|;|:|/|\|.|,| ])
Решение
У меня нет достаточно времени, чтобы привести полный пример.Но поскольку вы используете .NET, вы можете сопоставлять любое количество этих классов символов:
http://msdn.microsoft.com/en-us/library/20bw873z.aspx
Выберите то, что вы хотите принять, и замените все, что не соответствует этому набору.
Другие советы
(Это было опубликовано до того, как был указан язык.)
Для замены символов, отличных от ascii, пробелом в Perl,
$string =~ s/[^[:ascii:]]/ /g;
Видишь http://codepad.org/KTMvQiOz .Здесь the [^[:ascii:]]
является регулярным выражением, которое соответствует любому символу, отличному от ascii.
Можно было бы найти все "специальные" символы с помощью этого регулярного выражения, а затем просто заменить их символом пробела:
/[<special_characters_here>]/
Однако обычно лучше использовать белый список, таким образом упоминая все разрешенные символы и заменяя все, что ими не является, символом пробела:
/[^<allowed_characters_here>]/
Вы имеете в виду замену символов возврата каретки и новой строки?
Если это то, что вам нужно, то это поможет:
var source = "once\r\ntwice\r\nthrice";
var pattern = new Regex(@"\r\n");
var result = pattern.Replace(source, ",");
Assert.AreEqual("once,twice,thrice", result);