Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!

The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.

Regular Expression Functions

Overview

This Plug-in exposes Java Regular Expression string manipulation capabilities as Appian Functions. Very useful for validation rules and data manipulation on interactive SAIL forms.  

Key Features & Functionality

Datatypes provided:

  • RegexMatch - has a string field representing the string found, a starting index for the string in the haystack and an ending index for the string in the haystack

Regex Flags supported:

  • i - case insensitive
  • g - find all matches
  • m - multiline search
  • s - treats the entire string as a single line
  • u - unicode aware search
  • x - ignores comments starting with '#' and white spaces
  • d - enables unix line mode

Functions provided:

  • regexSearch - Searches for the selected pattern with the specified regex options and returns a list of RegexMatch Datatypes, accepts all regex flags.
  • regexArraySearchIndexOfFirstMatch - Searches an array for a match and returns the first index of match found
  • regexMatch - Indicates whether the regular expression finds a match in the input string, accepts all regex flags.
  • regexInsertMatchMarkers - Finds the match or matches and surrounds them with starting and ending markers, accepts all regex flags.
  • regexFirstMatch - Returns the first match of the regular expression within the input string, accepts all regex flags except 'g'.
  • regexAllMatches - Returns all matches of the regular expression within the input string, accepts all regex flags.
  • regexReplaceAll - Replaces all matches of the regular expression within the input string
Anonymous
Parents
  • Hey Chris,

    I'm trying to use regexReplaceAll() to escape the pattern string to make it safe for use with regexSearch().

    Unfortunately, I can't seem to make regexReplaceAll() function work.  I rather not use sustitute() function for each and every special characters in regular expression.

    In function regexReplaceAll(), the replacement string doesn't seem to support the regular expression substitution syntax.  I need to be able dynamically escape special characters and I can't seem to be able to dynamically escape characters I'm escaping.

    Let me know if there is a way to get it to work in using your library.  I'm trying to escape the usual suspects:

    ., +, *, ?, ^, $, (, ), [, ], {, }, |, \ (not including commas).

    Also, I remember using the regular expression plugin twice in the last decade and I remember that version was more like the industry standard regular expression function behavior, similar to one implemented in Java.  Am I wrong?  Also, could it be possible to be more of a transparent call to how the regular expression works in Java?

    Thanks.

Comment
  • Hey Chris,

    I'm trying to use regexReplaceAll() to escape the pattern string to make it safe for use with regexSearch().

    Unfortunately, I can't seem to make regexReplaceAll() function work.  I rather not use sustitute() function for each and every special characters in regular expression.

    In function regexReplaceAll(), the replacement string doesn't seem to support the regular expression substitution syntax.  I need to be able dynamically escape special characters and I can't seem to be able to dynamically escape characters I'm escaping.

    Let me know if there is a way to get it to work in using your library.  I'm trying to escape the usual suspects:

    ., +, *, ?, ^, $, (, ), [, ], {, }, |, \ (not including commas).

    Also, I remember using the regular expression plugin twice in the last decade and I remember that version was more like the industry standard regular expression function behavior, similar to one implemented in Java.  Am I wrong?  Also, could it be possible to be more of a transparent call to how the regular expression works in Java?

    Thanks.

Children
  • I got it to work.  Here's an excerpt of my code in case anybody else is interested in escaping their regular expression pattern using regexReplaceAll() function.

    local!escapedPatternList: a!forEach(
        items: local!patternList,
        expression: fn!regexreplaceall(
          "([+-.\*?^$\(\)\[\]\{\}\|\\])",
          fv!item,
          "\\$1"
        )
    )