كيف يمكنني استخدام Regex لاستبدال chars غير الكلمة في قطعة معينة من السلسلة؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

لدي ملف نصي مع صف مثل هذا:

SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505

أرغب في استبدال جميع chars غير الكلمة في جزء القيمة مع الحرف 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 و _ chars مع "0" بعد "senderStimeseriesIdientification:".

نصائح أخرى

بدلاً من القيام به كاستبدال regex واحد ، قمت بتقسيم الملف إلى خطوط ، ثم معالجة الخطوط التي تبدأ فقط بـ "senderStimeseriesIdentification:". بهذه الطريقة يكون استبدال Regex لطيفًا وبسيطًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top