Настраиваемое регулярное выражение O365 DLP
Я пытаюсь создать настраиваемое регулярное выражение для определения номеров социального страхования в O365 DLP. Условия: первое трехзначное число не должно начинаться с 000, 666 или 150, а последние конечные четырехзначные числа не должны заканчиваться на 0000. Поэтому я придумал следующее регулярное выражение:
(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4} - Это отлично работает
Требуется решение: что, если я хочу исключить тот же шаблон, если он начинается со слова, например, Apple: 173-12-9878 или Content: 173-12-9878, я попытался добавить слово в отрицательный прогноз, например (?!Apple: |Content:)(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4}, но я не могу получить эту работу.
Пожалуйста, посоветуйте, а также предложите, есть ли лучший способ добиться этого. Спасибо.
1 ответ
Используйте регулярное выражение с просмотром назад:
\b(?<!Apple: |Content: )(?!0{2}|666|150)\d{3}-\d{2}-(?!0{4})\d{4}\b
См. Доказательство и объяснение.
В (?<!Apple: |Content: )
отрицательный просмотр назад предотвратит совпадение после Apple:
а также Content:
.
Заметка \b
является границей слова, он не позволит сопоставить более длинные числа, чем вы ожидаете.