Azure Storage Action: can't use parenthesis or exclamation mark on blob name match predicate

Thomas Bolon 1 Reputation point
2026-06-16T13:55:42.33+00:00

I try to modify any file where the name matches the pattern "((DEL!(???)))".

I can't save the action when this condition is set, I receive validation errors.

I tried escaping the characters without success.

It seems that a lot of special characters are not supported. If that's the case, the documentation should be updated, as it's currently stopping a lot of usage. In our current situation we can't get rid of these special characters because the pattern will be too broad if we remove them.

Azure Blob Storage
Azure Blob Storage

An Azure service that stores unstructured data in the cloud as blobs.


2 answers

Sort by: Most helpful
  1. Sina Salam 31,456 Reputation points Volunteer Moderator
    2026-07-17T12:47:19.82+00:00

    Hello Thomas Bolon,

    Welcome to the Microsoft Q&A and thank you for posting your questions here.

    I understand that your Azure Storage Action: can't use parenthesis or exclamation mark on blob name match predicate.

    What you can do is:

    • If the blob name must match the exact literal value ((DEL!(???))), do not use matches(). Use equals(): [[equals(Name, '((DEL!(???)))')]]
    • If ??? is intended to mean exactly three variable characters, and the literal parentheses and ! must also be part of the match, Azure Storage Actions currently does not provide a documented reliable escape syntax for that full matches() expression. In that case, use a pre-classification step, such as Azure Function, Azure SDK, or automation job, to identify matching blobs and write a blob index tag or metadata value, then target that marker from Storage Actions using equals().

    For an example tag-based Storage Actions condition:

    [[equals(Tags.Value[StorageActionMatch], 'DEL')]]

    If blob index tags are not suitable for the account type or namespace configuration, use metadata instead:

    [[equals(Metadata.Value[StorageActionMatch], 'DEL')]]

    After switching exact-name matching to equals(), the Storage Action condition avoids wildcard parsing and should save/deploy successfully. If the wildcard version is required and matches() still fails with parentheses or !, the next action should be a Microsoft support escalation against Azure Storage Actions condition parsing, because the current documentation does not provide a supported syntax to express that pattern safely.

    For more reading and steps:

    I hope this is helpful. Please! Do not hesitate to let me know if you have any other questions, steps or clarifications.


    Please do not close the thread by upvoting and accepting the answer if any part of it is helpful.

    Was this answer helpful?

    1 person found this answer helpful.

  2. Christos Panagiotidis 3,551 Reputation points
    2026-07-17T11:49:00.04+00:00

    This looks like a Storage Actions condition-serialization problem, not a Blob Storage filename restriction. In matches, only * and ? are wildcard characters. Parentheses and ! should be literal text.

    If the three question marks are wildcards, your existing expression is valid in principle: [[matches(Name, '((DEL!(???)))')]].

    If they are literal question marks, escape each one. In an ARM/Bicep/JSON string, the backslash also needs escaping, so the value becomes ((DEL!(\\?\\?\\?))).

    The key clue is the deployment error saying Name is empty. That means the portal or resource provider is losing the value during validation, rather than rejecting the blob name itself.

    As a workaround, build the condition from startsWith, contains, and endsWith clauses and use Preview Conditions before assigning the task. If the exact pattern still serializes as empty outside the portal, open an Azure support case and include the failed deployment operation ID and generated task JSON. This is likely a product defect.

    Was this answer helpful?

    1 person found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.