كيف يمكنني استخدام Regex لاستبدال chars غير الكلمة في قطعة معينة من السلسلة؟
سؤال
لدي ملف نصي مع صف مثل هذا:
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 لطيفًا وبسيطًا.
لا تنتمي إلى StackOverflow