Power-Fx icon indicating copy to clipboard operation
Power-Fx copied to clipboard

Limited regular expressions

Open gregli-msft opened this issue 1 year ago • 4 comments

Before we GA regular expressions in C# we'd like to have one consistent regular expression language between C# and Canvas. This PR limits regular expressions to common features that are supported, with consistent semantics, by both canonical .NET (used by the C# interpreter) and XRegExp (used by Canvas/JavaScript). It is better to disallow now and bring back with customer demand or as platforms add more support.

.NET Features that are disallowed:

  • Capture groups
    • Self-referncing groups, such as (a\1).
    • Treat all escaped number sequences as a backreference number.
    • Single quoted (?'name'... and \k'name'.
    • Balancing capture groups.
  • Octal character codes (use Hex or Unicode instead).
    • \o (letter o) could be added in the future, but we should avoid \0 (zero) which causes backreference confusion.
  • Inline options
    • Anywhere in the expression except the beginning.
    • For subexpressions.
  • Character classes
    • Character class subtraction [a-z-[m-n]].
  • Conditional alternation

gregli-msft avatar Jun 25 '24 12:06 gregli-msft

This looks good to me. My top concern is complexity - but this keeps it simple.

MikeStall avatar Jun 26 '24 07:06 MikeStall

Do all positive tests under Match_Limited.txt work in Power Apps?

CarlosFigueiraMSFT avatar Jul 03 '24 22:07 CarlosFigueiraMSFT

✅ No public API change.

LucGenetier avatar Aug 31 '24 17:08 LucGenetier

✅ No public API change.

LucGenetier avatar Sep 01 '24 07:09 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 04 '25 15:02 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 04 '25 20:02 LucGenetier

This comment did not age well ;)


In reply to: 2191048923

MikeStall avatar Feb 05 '25 00:02 MikeStall

✅ No public API change.

LucGenetier avatar Feb 05 '25 07:02 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 06 '25 05:02 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 06 '25 06:02 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 06 '25 20:02 LucGenetier

✅ No public API change.

LucGenetier avatar Feb 20 '25 19:02 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 06 '25 07:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 06 '25 21:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 06 '25 22:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 07 '25 04:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 07 '25 05:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 07 '25 17:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 08 '25 10:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 09 '25 07:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 09 '25 15:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 11 '25 05:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 11 '25 06:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 11 '25 18:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 12 '25 05:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 12 '25 07:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 12 '25 18:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 13 '25 00:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 13 '25 21:03 LucGenetier

✅ No public API change.

LucGenetier avatar Mar 18 '25 06:03 LucGenetier