2009-05-05 3 views
2

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

SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505 

Я хотел бы заменить все символы, не слово в значении части с характером n, как это:

SendersTimeSeriesIdentification: COMPANYnAnCOMPANYnBnREFn7n20090505 

Но во всем файле есть похожие строки, которые должны оставаться неповрежденными. Примером являются:

MessageIdentification: REF_7/VER_1/20090505 

Я думаю, что я должен использовать с просмотром назад, и я пришел к этой попытке (VB.NET):

Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification:)(\W)", "0") 

Это не работает, как я хотел бы, чтобы это. Так что мои вопросы:
Возможно ли заменить все символы, отличные от слов, в определенной части строки только одним вызовом Regex.Replace? Как?

ответ

2

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

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

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

+0

Я буду использовать это решение только потому, что в моей ситуации это проще. Я предполагаю, что это не сработает, если строка будет содержать комментарий в конце (// некоторый комментарий), потому что две косые черты будут заменены, хотя они не должны быть. – SinkovecJ

2

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

+0

Ответ Камареи правильный, но я бы взял этот подход, если мог. –

+0

@Alan M: Я согласен. «Если бы я мог», это ключ. :-) – SinkovecJ