#c# #regex
#c# #регулярное выражение
Вопрос:
Я много искал похожие вопросы, чтобы решить эту проблему, но не смог найти ни одного сообщения в Stackoverflow, которое могло бы решить проблему.
Я пытаюсь найти все экземпляры шаблона ТОЛЬКО в строке, начинающейся с ‘Service ID’, но он также соответствует многим другим результатам из других строк, которые я не хочу включать ни из каких других мест.
Вот входной текст:
Dear Customer,
Wxyz Communication is in receipt of maintenance activity. The details of maintenance activity are as below. Your below mentioned service would experience an outage of “2 Hours” during the activity window.
Wxyz COMMUNICATIONS
Planned Work Notification
Ticket Reference - TCL CHGP1234567
Service ID 066BANGX1234567890, 066BANGX1234567891, A0B1C-D4E-FG5
NIMS ID A0ANX-T9Y-NP1, A0BC5-T1Y-NP1
Maintenance Type Emergency
Activity Status Scheduled
Execution Owner 3rd party service Provider
Location of activity Thailand
Activity Window (IST) 2020-09-07 23:30:00 IST to 2020-09-08 04:30:00 IST
Activity Window (GMT) 2020-09-07 18:00:00 GMT to 2020-09-07 23:00:00 GMT
Expected Impact Duration(DD:HH:MM) : 2 Hours
Activity Description Service provider will be performing an emergency software up gradation on their core router to improve the performance of service.
We request you to reschedule sensitive operations at your end accordingly.
We apologize for any inconvenience due to this event and resulting downtime.
If you have any queries with respect to this activity, feel free to contact us on the coordinates mentioned below:
Mail ID :planned.activity@Wxyzcommunications.com
Contact Number : 91 20 1234 5678 amp; Toll Free no: 1-8001234567
We look forward to your co-operation and a long term synergic association.
Best Regards,
Customer Service
Wxyz COMMUNICATIONS
Ref:MSGTCL000027382595
Вот регулярное выражение:
(Service IDs ,)*(?<CircuitID>[A-Z0-9]{11,30})
Вот ожидаемый результат:
066BANGX1234567890
066BANGX1234567891
У меня есть копия регулярного выражения, доступная по адресу Regex101.com
Комментарии:
1. Попробуйте это регулярное выражение:
(?:^Service ID|(?!^)G,)h (?<CircuitID>[A-Z0-9]{11,30})
2. Потрясающе. Предоставленное вами регулярное выражение работает должным образом. Не могли бы вы объяснить, как это достигается.
Ответ №1:
Вы можете использовать это регулярное выражение с G
для своих совпадений:
(?:^Service ID|(?!^)G,)h (?<CircuitID>[A-Z0-9]{11,30})
Демонстрация регулярных выражений
Подробности регулярных выражений:
(?:^Service ID|(?!^)G,)
: Сопоставить строку, начинающуюся сService ID
или заканчивающуюся предыдущим совпадениемG
утверждает позицию в конце предыдущего совпадения или в начале строки для первого совпадения, а отрицательный прогноз(?!^)
гарантирует, что мы не совпадаемG
в начале строкиh
: Сопоставить 1 пробел(?<CircuitID>[A-Z0-9]{11,30})
: Сопоставьте вашCircuitID
в захваченной группе с именемCircuitID
, состоящим из 11-30 буквенно-цифровых символов