RemoveMatches
Removes items from the given list of values if they match any of the patterns in the provided `filters`. If the match_exact argument is 'yes', direct string compare is used, otherwise the comparison is done using regex.
python · Filters And Transformers
Source
import re from CommonServerPython import * # noqa: F401 def filter_items(values: list, filter_list: list, ignore_case: bool, match_exact: bool): """Filter the values by the filter list. If an item matches an entry in the filter_list, than do not return it. Args: values (_type_): The value on which to apply the transformer filter_list (_type_): The list of pattern to filter from the values ignore_case (_type_): If True, ignore the case of the value match_exact (_type_): If True, only filter out values exactly matching the pattern Returns: _type_: The values not matching any of the patterns in the given list """ filtered_items = [] regex_ignore_case_flag = re.IGNORECASE if ignore_case else 0 list_to_lowercase = [list_item.lower().strip() for list_item in filter_list] for value in values: if match_exact: if ignore_case: if value.lower() in list_to_lowercase: continue else: if value in filter_list: continue else: filtered = False for filter_string in filter_list: filter_string = filter_string.strip() # remove trailing/leading whitespace if filter_string and re.search(filter_string, value, regex_ignore_case_flag): filtered = True break if filtered: continue filtered_items.append(value) return filtered_items """ MAIN FUNCTION """ def main(): # pragma: no cover try: args = demisto.args() ignore_case = argToBoolean(args.get("ignore_case", "True")) match_exact = argToBoolean(args.get("match_exact", "False")) values = argToList(args.get("value")) delimiter = args.get("delimiter", "\n") list: str = args.get("filters", "") if not list: filtered_items = values else: filters = re.split(delimiter, list) filtered_items = filter_items(values=values, filter_list=filters, ignore_case=ignore_case, match_exact=match_exact) return_results(filtered_items) except Exception as ex: return_error(f"Failed to execute FilterByListTransformer. Error: {ex!s}") """ ENTRY POINT """ if __name__ in ("__main__", "__builtin__", "builtins"): main()
README
Removes items from the given list of values if they match any of the patterns in the provided filters.
If the match_exact argument is ‘yes’, direct string compare is used, otherwise the comparison is done using regex.
Example
value (Get)
[
"https://domain1.com/some/url",
"http://another.url.com",
"domain2.com/faq",
"domain3.com/login",
"sub.domain3.com/login"
]
filters
^*.\.domain1.com/.*\n
^*.\.domain2.com/.*\n
^sub.domain3.com/.*
Result
[
"http://another.url.com",
"domain3.com/login"
]
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | transformer, entirelist, general |
| Cortex XSOAR Version | 6.10.0 |
Inputs
| Argument Name | Description |
|---|---|
| value | The value on which the transformer is applied. |
| ignore_case | Whether to ignore the case of the item for which you are searching. Default is “Yes”. |
| match_exact | Whether to match the exact item in the list, or look for any string that contains it. Default is “No”. |
| delimiter | A string used to delimit fields. For example, a new line “\n” should match the list separator configuration. |
| filters | A list of patterns to remove from the value. This can be a single string or a list of patterns, separated by the pattern defined in the delimiter argument. Unless match_exact is yes, regex pattern is supported. |
Outputs
There are no outputs for this script.