Как использовать регулярные выражения для замены несловарных символов в определенном фрагменте строки?

StackOverflow https://stackoverflow.com/questions/824052

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть текстовый файл со следующей строкой:

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: " ;. Таким образом, замена регулярных выражений приятна и проста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top