Как использовать регулярные выражения для замены несловарных символов в определенном фрагменте строки?
Вопрос
У меня есть текстовый файл со следующей строкой:
SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505
Я хотел бы заменить все несловарные символы в части значения символом n
, например так:
SendersTimeSeriesIdentification: COMPANYnAnCOMPANYnBnREFn7n20090505
Но во всем файле есть похожие строки, которые должны остаться нетронутыми. Примером является:
MessageIdentification: REF_7/VER_1/20090505
Я думаю, что должен использовать lookbehind, и я пришел к этой попытке (VB.NET):
Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification: )(\W)", "0")
Это не работает так, как мне бы хотелось. Итак, мои вопросы:
Можно ли заменить все несловарные символы в определенном фрагменте строки одним вызовом Regex.Replace? Как?
Решение
Попробуйте это:
Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification:\s.*)[_\W]", "0")
Это заменяет все символы \ W и _ на " 0 " после " SendersTimeSeriesIdentification: ".
Другие советы
Вместо того, чтобы выполнять замену одного регулярного выражения, я бы разбил файл на строки, а затем обрабатывал только строки, начинающиеся с " SendersTimeSeriesIdentification: " ;. Таким образом, замена регулярных выражений приятна и проста.