Outlook регулярные выражения в правилах
Похоже, что Microsoft Outlook 2010 может использовать логическое «И» только при установке ПРАВИЛ. Я нахожу это очень тревожным, поскольку даже нижняя часть Windows Live Mail может использовать «ИЛИ». Я что-то пропустил? Я пытаюсь воссоздать это правило WLM в Outlook:
Не уверен , если это поможет, но A || B может быть переработано , как !(!A && !B) , например A or B == not(not A and not B) . @ Lèsemajesté: умный, но, к сожалению, Outlook также не поддерживает такого рода рассуждения. Мастер правил очень ограничен в этом отношении. @kmote: Да, я не пользуюсь Outlook и подумал, что это, вероятно, было далеко, поэтому я сделал это комментарием. Это не поможет этому ответу, но у Мастера правил есть страницы для ЕСЛИ все условия ДЕЙСТВУЮТ за действиями, КРОМЕ каких-либо условий. Ваша логика может быть в форме A && B && !(C || D) , которой может быть достаточно в зависимости от ваших потребностей.Примечательно, что мастер правил Outlook не поддерживает операции «ИЛИ», как вы описали. Вы можете создать два отдельных правила, чтобы получить один и тот же результат, если вы не против распространения правил. Единственная альтернатива - создать собственное правило в скрипте VBA, но это ни в коем случае не тривиальная задача - я бы не рекомендовал это делать. (Если вы заинтересованы, вы можете просмотреть ссылки, найденные в этом вопросе .)
EEk. В моей работе есть очень много списков, и такое количество правил на самом деле является проблемой. Outlook 2010 имеет довольно низкий предел количества правил, поэтому разумной стратегией фильтрации было бы неплохо. Очевидно, почему нет кнопки типа «Дополнительно», в которой можно ввести квази- оператор SQL? У меня есть одно правило для «включает в себя» и другое для «из XYZ». Вы можете добавить несколько From XYZ / ZYX / CCY в одном правиле, так что это немного меньше беспорядка. Я трачу больше времени на очистку своих правил, чем на их создание, но я делюсь своими правилами с коллегами .Чтобы получить «ИЛИ», вам нужно посмотреть далее вниз список условий шага 1. Например, «с конкретными словами в теме или тексте». После этого вы можете перечислить все требуемые слова.
Этот комментарий великолепен. Спасибо за это. Я думаю, что это должно быть ответом на вопрос. ОП хочет фильтровать, sender or subject и это не решает эту проблему.Я нахожусь на перспективу для Mac 2018. Есть два вида правил: 1) сторона сервера и 2) сторона клиента. Правила на стороне сервера не поддерживают ИЛИ, а правила на стороне клиента -.
Я полагаю, что вы всегда можете написать некоторый код VBA для обработки случая, если это одноразовый.
как насчет парня, который говорит, что вы можете использовать ИЛИ / ИВ строке темы вы можете использовать оба оператора И / ИЛИ. Просто разделите слова заглавными буквами ИЛИ / И с пробелом до и после оператора.
You can specify regular expression rules to have a contextual add-in activated when a match is found in specific fields of the message. Contextual add-ins activate only in read mode, Outlook does not activate contextual add-ins when the user is composing an item. There are also other scenarios where Outlook does not activate add-ins, for example, digitally signed items. For more information, see Activation rules for Outlook add-ins.
You can specify a regular expression as part of an ItemHasRegularExpressionMatch rule or ItemHasKnownEntity rule in the add-in XML manifest. The rules are specified in a DetectedEntity extension point.
Outlook evaluates regular expressions based on the rules for the JavaScript interpreter used by the browser on the client computer. Outlook supports the same list of special characters that all XML processors also support. The following table lists these special characters. You can use these characters in a regular expression by specifying the escaped sequence for the corresponding character, as described in the following table.
Character | Description | Escape sequence to use |
---|---|---|
" | Double quotation mark | " |
& | Ampersand | & |
' | Apostrophe | ' |
< | Less-than sign | < |
> | Greater-than sign | > |
ItemHasRegularExpressionMatch rule
An ItemHasRegularExpressionMatch rule is useful in controlling activation of an add-in based on specific values of a supported property. The ItemHasRegularExpressionMatch rule has the following attributes.
If you specify BodyAsHTML , Outlook only applies the regular expression if the item body is HTML. Otherwise, Outlook returns no matches for that regular expression.
If you specify BodyAsPlaintext , Outlook always applies the regular expression on the item body.
Best practices for using regular expressions in rules
Pay special attention to the following when you use regular expressions.
If you specify an ItemHasRegularExpressionMatch rule on the body of an item, the regular expression should further filter the body and should not attempt to return the entire body of the item. Using a regular expression such as .* to attempt to obtain the entire body of an item does not always return the expected results.
The plain text body returned on one browser can be different in subtle ways on another. If you use an ItemHasRegularExpressionMatch rule with BodyAsPlaintext as the PropertyName attribute, test your regular expression on all the browsers that your add-in supports.
Because different browsers use different ways to obtain the text body of a selected item, you should make sure that your regular expression supports the subtle differences that can be returned as part of the body text. For example, some browsers such as Internet Explorer 9 uses the innerText property of the DOM, and others such as Firefox uses the .textContent() method to obtain the text body of an item. Also, different browsers may return line breaks differently: a line break is \r\n on Internet Explorer, and \n on Firefox and Chrome. For more information, se W3C DOM Compatibility - HTML.
The HTML body of an item is slightly different between an Outlook rich client, and Outlook on the web or Outlook mobile. Define your regular expressions carefully.
Depending on the Outlook client, type of device, or property that a regular expression is being applied on, there are other best practices and limits for each of the clients that you should be aware of when designing regular expressions as activation rules. See Limits for activation and JavaScript API for Outlook add-ins for details.
Examples
The following ItemHasRegularExpressionMatch rule activates the add-in whenever the sender's SMTP email address matches @contoso , regardless of uppercase or lowercase characters.
The following is another way to specify the same regular expression using the IgnoreCase attribute.
The following ItemHasRegularExpressionMatch rule activates the add-in whenever a stock symbol is included in the body of the current item.
ItemHasKnownEntity rule
An ItemHasKnownEntity rule activates an add-in based on the existence of an entity in the subject or body of the selected item. The EntityType type defines the supported entities. Applying a regular expression on an ItemHasKnownEntity rule provides the convenience where activation is based on a subset of values for an entity (for example, a specific set of URLs, or telephone numbers with a certain area code).
Outlook can only extract entity strings in English regardless of the default locale specified in the manifest. Only messages support the MeetingSuggestion entity type; appointments do not. You cannot extract entities from items in the Sent Items folder, nor can you use an ItemHasKnownEntity rule to activate an add-in for items in the Sent Items folder.
The ItemHasKnownEntity rule supports the attributes in the following table. Note that while specifying a regular expression is optional in an ItemHasKnownEntity rule, if you choose to use a regular expression as an entity filter, you must specify both the RegExFilter and FilterName attributes.
Attribute name | Description |
---|---|
EntityType | Specifies the type of entity that must be found for the rule to evaluate to true . Use multiple rules to specify multiple types of entities. |
RegExFilter | Specifies a regular expression that further filters instances of the entity specified by EntityType . |
FilterName | Specifies the name of the regular expression specified by RegExFilter , so that it is subsequently possible to refer to it by code. |
IgnoreCase | Specifies whether to ignore case when matching the regular expression specified by RegExFilter . |
Examples
The following ItemHasKnownEntity rule activates the add-in whenever there is a URL in the subject or body of the current item, and the URL contains the string youtube , regardless of the case of the string.
Using regular expression results in code
You can obtain matches to a regular expression by using the following methods on the current item.
getRegExMatches returns matches in the current item for all regular expressions specified in ItemHasRegularExpressionMatch and ItemHasKnownEntity rules of the add-in.
getRegExMatchesByName returns matches in the current item for the identified regular expression specified in an ItemHasRegularExpressionMatch rule of the add-in.
getFilteredEntitiesByName returns entire instances of entities that contain matches for the identified regular expression specified in an ItemHasKnownEntity rule of the add-in.
When the regular expressions are evaluated, the matches are returned to your add-in in an array object. For getRegExMatches , that object has the identifier of the name of the regular expression.
Outlook does not return matches in any particular order in the array. Also, you should not assume that matches are returned in the same order in this array even when you run the same add-in on each of these clients on the same item in the same mailbox.
Examples
The following is an example of a rule collection that contains an ItemHasRegularExpressionMatch rule with a regular expression named videoURL .
The following example uses getRegExMatches of the current item to set a variable videos to the results of the preceding ItemHasRegularExpressionMatch rule.
Multiple matches are stored as array elements in that object. The following code example shows how to iterate over the matches for a regular expression named reg1 to build a string to display as HTML.
The following is an example of an ItemHasKnownEntity rule that specifies the MeetingSuggestion entity and a regular expression named CampSuggestion . Outlook activates the add-in if it detects that the currently selected item contains a meeting suggestion, and the subject or body contains the term WonderCamp .
The following code example uses getFilteredEntitiesByName on the current item to set a variable suggestions to an array of detected meeting suggestions for the preceding ItemHasKnownEntity rule.
Вы можете указать регулярное выражение в составе правила ItemHasRegularExpressionMatch или ItemHasKnownEntity в XML-файле манифеста надстройки. Правила указываются в точке расширения DetectedEntity.
Outlook оценивает регулярные выражения на основе правил для интерпретатора JavaScript, используемых браузером на клиентском компьютере. Outlook поддерживает те же специальные знаки, что и все обработчики XML. Они перечислены в следующей таблице. Указывая эти знаки в регулярных выражениях, используйте соответствующие escape-последовательности из следующей таблицы.
Знак | Описание | Escape-последовательность |
---|---|---|
" | Двойная кавычка | " |
& | Амперсанд | & |
' | Апостроф | ' |
< | Знак "меньше" | < |
> | Знак "больше" | > |
Правило ItemHasRegularExpressionMatch
Правило ItemHasRegularExpressionMatch позволяет управлять активацией надстройки в зависимости от определенных значений поддерживаемого свойства. Ниже описаны атрибуты правила ItemHasRegularExpressionMatch .
Если вы укажете BodyAsHTML , Outlook будет применять регулярное выражение, только если текст элемента представлен в формате HTML. В противном случае Outlook возвращает отсутствие совпадений для этого регулярного выражения.
Если вы укажете BodyAsPlaintext , Outlook всегда будет применять регулярное выражение для текста элемента.
Рекомендации по использованию регулярных выражений в правилах
Обратите особое внимание на следующее при использовании регулярных выражений.
Если вы указываете правило ItemHasRegularExpressionMatch для текста элемента, регулярное выражение должно дальше фильтровать текст, а не пытаться вернуть весь текст элемента. Использование регулярного выражения, такого как .* , для получения всего текста элемента не всегда приносит ожидаемые результаты.
Возвращаемый обычный текст может несколько отличаться в зависимости браузера. Если вы используете правило ItemHasRegularExpressionMatch с таким значением атрибута PropertyName : BodyAsPlaintext , проверьте свое регулярное выражение во всех поддерживаемых надстройкой браузерах.
Так как в разных браузерах основной текст выбранного элемента считывается разными способами, ваше регулярное выражение должно учитывать мелкие различия, которые могут быть возвращены в составе основного текста. Например, в некоторых браузерах, таких как Internet Explorer 9, для получения основного текста элемента используется свойство innerText модели DOM, а в других (например, Firefox) — метод .textContent() . Кроме того, различные браузеры могут по-разному возвращать разрывы строк (в Internet Explorer — \r\n , а в Firefox и Chrome — \n ). Дополнительные сведения см. в документе Консорциум W3C: совместимость с моделью DOM (HTML).
Текст элемента в HTML-формате немного отличается для полнофункционального клиента Outlook, Outlook в Интернете и Outlook для мобильных устройств. Будьте внимательны, задавая регулярные выражения.
В зависимости Outlook клиента, типа устройства или свойства, на которое применяется регулярное выражение, для каждого из клиентов существуют другие методы и ограничения, которые следует знать при разработке регулярных выражений в качестве правил активации. Дополнительные сведения см. в материале Ограничения для активации и API JavaScript для Outlook надстройки.
Примеры
Следующее правило ItemHasRegularExpressionMatch активирует надстройку, если SMTP-адрес отправителя содержит строку @contoso без учета регистра.
Ниже приведен другой способ указания того же регулярного выражения с использованием атрибута IgnoreCase .
Следующее правило ItemHasRegularExpressionMatch активирует надстройку, если основной текст текущего элемента содержит биржевой символ акции.
Правило ItemHasKnownEntity
Правило ItemHasKnownEntity активирует надстройку при наличии сущности в теме или тексте выбранного элемента. Тип EntityType определяет поддерживаемые сущности. Применять регулярное выражение в правиле ItemHasKnownEntity удобно, когда активация надстройки зависит от группы значений сущности (например, определенного набора URL-адресов или номеров телефонов с определенным кодом области).
Правило ItemHasKnownEntity поддерживает атрибуты, перечисленные в следующей таблице. Обратите внимание, что указывать регулярное выражение в правиле ItemHasKnownEntity необязательно, но при использовании регулярного выражения в качестве фильтра сущности необходимо указывать атрибуты RegExFilter и FilterName .
Имя атрибута | Описание |
---|---|
EntityType | Задает тип сущности, который должен быть обнаружен, чтобы правило было оценено как true . Используйте несколько правил, чтобы указать несколько типов сущностей. |
RegExFilter | Указывает регулярное выражение, обеспечивающее дальнейшую фильтрацию экземпляров сущности, указанной атрибутом EntityType . |
FilterName | Указывает имя регулярного выражения, заданного атрибутом RegExFilter , чтобы впоследствии можно было сослаться на него в коде. |
IgnoreCase | Указывает, следует ли игнорировать регистр при поиске соответствий регулярному выражению, заданному атрибутом RegExFilter . |
Примеры
В следующем правиле ItemHasKnownEntity активация надстройки выполняется при наличии URL-адреса в теме или основном тексте текущего элемента и строки youtube в этом адресе независимо от регистра.
Использование результатов регулярных выражений в коде
Вы можете получить совпадения с регулярным выражением с помощью следующих методов текущего элемента.
Метод getRegExMatches возвращает строки текущего элемента, соответствующие всем регулярным выражениям, указанным в правилах ItemHasRegularExpressionMatch и ItemHasKnownEntity для надстройки.
getRegExMatchesByName возвращает строки текущего элемента, соответствующие определенному регулярному выражению, указанному в правиле ItemHasRegularExpressionMatch надстройки.
getFilteredEntitiesByName возвращает полные экземпляры сущностей, которые содержат соответствия определенному регулярному выражению, указанному в правиле ItemHasKnownEntity надстройки.
При оценке регулярных выражений соответствия возвращаются в надстройку в массиве. При использовании метода getRegExMatches идентификатор этого массива соответствует имени регулярного выражения.
Outlook не возвращает соответствия в каком-либо определенном порядке в массиве. Кроме того, соответствия могут возвращаться в другом порядке, даже если вы запустите ту же настройку в каждом из этих клиентов для того же элемента в том же почтовом ящике.
Примеры
Ниже приведен пример коллекции правил, содержащей правило ItemHasRegularExpressionMatch с регулярным выражением videoURL .
В следующем примере используется метод getRegExMatches текущего элемента, чтобы поместить в переменную videos результаты предыдущего правила ItemHasRegularExpressionMatch .
Несколько совпадений хранятся в этом объекте в виде элементов массива. Следующий пример кода показывает, как выполнять итерацию по совпадениям для регулярного выражения reg1 , чтобы создать строку для отображения в виде HTML-кода.
Ниже приведен пример правила ItemHasKnownEntity , которое указывает сущность MeetingSuggestion и регулярное выражение CampSuggestion . Outlook активирует надстройку, если обнаруживает, что выбранный элемент содержит приглашение на собрание, а тема или текст содержит термин WonderCamp .
В следующем примере кода используется метод getFilteredEntitiesByName текущего элемента, чтобы поместить в переменную suggestions массив обнаруженных приглашений на собрание для предыдущего правила ItemHasKnownEntity .
Я хотел бы найти в своей электронной почте Outlook регулярные выражения. Это возможно? Если нет, есть ли какая-нибудь функция подстановочных знаков без регулярных выражений? Без каких-либо плагинов предпочтительнее, но если нет, то это приемлемый вариант. Однако я бы очень хотел избежать Google Desktop.
Я использую Outlook 2010, если это имеет значение.
Билл, я использую Outlook более 10 лет, по крайней мере, в 3 версиях. Я был обычным пользователем регулярных выражений в другом программном обеспечении почти так долго. Хотя я не использую Outlook 2010, я вполне уверен, что эта функция отсутствует.
Частично я основываю свой ответ на функциональности MS Word (2007), которая использует подстановочные знаки. Тем не менее, MS Word даже не является регулярным выражением, хотя вы можете видеть, что оно требует некоторого влияния регулярных выражений.
Благодарю. Я использую его с Outlook 97 и время от времени искал поддержку регулярных выражений, но надеялся, что просто пропускаю что-то новое. Ну, вы можете уточнить на подстановочные знаки? Это просто * и?, Или какой-то другой набор? Я не знаю о WORD 2007, но в WORD 2010 есть некоторые функции RegEx'y, включая группирование - если вы используете «подстановочный знак» в расширенном поиске. Допустим, вы хотите, чтобы слова, разделенные символом «/», были разделены пробелом по обе стороны от символа «/», чтобы они не интерпретировались как «одно слово» и лучше «переносили», то есть «собака / кошка» на « собака / кошка ". то есть вы можете сделать: НАЙТИ: ([A-Za-z]) / (A-Za-z) ЗАМЕНИТЬ: \ 1 / \ 2Я знаю, что это не совсем тот ответ, который вы ищете, но это может помочь. Лента расширенного поиска в Outlook 2013 имитирует регулярные выражения. Например, для поиска точной фразы используйте условие «is (точно)»:
- Нажмите Инструменты поиска, Расширенный поиск
- Перейти на вкладку «Дополнительно»
- Используйте раскрывающийся список "Поле", чтобы выбрать поле, в котором вы хотите искать
- Выберите желаемое условие (для точного поиска "есть (точно)")
- Введите желаемый критерий поиска в поле «Значение», затем нажмите «Добавить в список»
- Нажмите «Найти сейчас», чтобы запустить поиск
Обратите внимание, что это позволяет вам искать строки типа «FIS», не получая хиты для «рыбы».
Читайте также: