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

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

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? Как?

Ответы [ 2 ]

2 голосов
/ 05 мая 2009

Попробуйте это:

Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification:\s.*)[_\W]", "0")

Это заменяет все символы \ W и _ на "0" после "SendersTimeSeriesIdentification:".

2 голосов
/ 05 мая 2009

Вместо того, чтобы выполнять замену одного регулярного выражения, я бы разбил файл на строки, а затем обрабатывал только те строки, которые начинаются с "SendersTimeSeriesIdentification:". Таким образом, замена регулярных выражений приятна и проста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...