Мне было интересно, можно ли добавить символ (который будет использоваться в качестве разделителя позже) к каждому экземпляру соответствия regex в строке.
Я анализирую текст для строки между < > и имею рабочий шаблон regex-хотя это сворачивает каждый экземпляр соответствия.
То, что я хотел бы сделать, это добавить каждый экземпляр соответствия с a, чтобы я мог вызвать.split (‘,’) метод позже и иметь коллекцию строки я могу цикл через.
$testString = "<blah@gmail.com><blah1@gmail.com>"
$testpattern = [regex]::Match($testString, '(?<=<)(.*)(?=>)').Value
$testPattern теперь будет «blah@gmail.combblah1@gmail.com»
Что я хотел бы добавить разделитель между каждым экземпляром матча, чтобы вызвать .split () метод для работы с коллекцией после факта.
$testpattern
естьblah@gmail.com><blah1@gmail.com
Вы должны использовать
<(.*)><(.*)>
, чтобы сохранить оба адреса электронной почты, а затем объединить обе строки:$testpattern = $testpattern[0] + "your string you want inbetween" + $testpattern[1]
Не уверен в 0 и 1, зависит от языка.
Другой момент, будьте осторожны, если есть какие-то пробелы или недопустимые символы для электронной почты, он все равно захватит их. вы должны использовать что-то вроде
<([a-zA-Z0-9\-@\._]*\@[a-zA-Z0-9-]*\.[a-z-A-Z]*)><([a-zA-Z0-9\-@\._]*\@[a-zA-Z0-9-]*\.[a-z-A-Z]*)>
Я знаю, что это не единственный способ справиться с проблемой, описанной выше, и, безусловно, не самый эффективный, но я в конечном итоге сделал следующее.
Поэтому, чтобы переформулировать вопрос, мне нужно разобрать заголовки электронной почты (в строку) для всех smtp-адресов (значение между ‘<‘ и’>’) и сохранить все адреса в коллекции после факта.