# in case of changes correct also the code in this method
self._re_exact_author_match=re.compile(r'\b((?P<secondorderop>[^\s]+:)?)exactauthor:(?P<author_name>[^\'\"].*?[^\'\"]\b)(?= and not | and | or | not |$)',re.IGNORECASE)
# match a second-order operator with no operator following it
# match search term, its content (words that are searched) and
# the operator preceding the term.
self._re_search_term_pattern_match=re.compile(r'\b(?P<combine_operator>find|and|or|not)\s+(?P<search_term>\S+:)(?P<search_content>.+?)(?= and not | and | or | not |$)',re.IGNORECASE)
\b(?P<leading>(find|and|or|not)\s+journal:) # first combining operator and index
(?P<search_content>.+?) # what we are searching
(?=\ and\ not\ |\ and\ |\ or\ |\ not\ |$)''')
# regular expression matching date after pattern
self._re_date_after_match=re.compile(r'\b(?P<searchop>d|date|dupd|dadd|da|date-added|du|date-updated)\b\s*(after|>)\s*(?P<search_content>.+?)(?= and not | and | or | not |$)',re.IGNORECASE)
# regular expression matching date after pattern
self._re_date_before_match=re.compile(r'\b(?P<searchop>d|date|dupd|dadd|da|date-added|du|date-updated)\b\s*(before|<)\s*(?P<search_content>.+?)(?= and not | and | or | not |$)',re.IGNORECASE)
# match date searches which have been keyword-substituted
self._re_keysubbed_date_expr=re.compile(r'\b(?P<term>('+self._DATE_ADDED_FIELD+')|('+self._DATE_UPDATED_FIELD+')|('+self._DATE_FIELD+'))(?P<content>.+?)(?= and not | and | or | not |$)',re.IGNORECASE)
# for finding (and changing) a variety of different SPIRES search keywords