Home > Software design >  Combine multiple regex expressions into a single line
Combine multiple regex expressions into a single line

Time:01-06

I am trying to get the following Regex expressions into a single line.

filename = Regex.Replace(filename, @"[^a-z0-9\s-!/\-_\.\*\(\)']", ""); // Remove all non valid chars          
    filename = Regex.Replace(filename, @"\s ", " ").Trim(); // convert multiple spaces into one space  
    filename = Regex.Replace(filename, @"\s", "_"); // //Replace spaces by dashes

CodePudding user response:

You can use

filename = Regex.Replace(filename, @"[^a-z0-9\s!/_.*()'-]|^\s |\s $|(\s )", m => m.Groups[1].Success ? "_" : "");

The regex matches

  • [^a-z0-9\s!/_.*()'-]| - any char but lowercase ASCII letters, digits, whitespace, !, /, _, ., *, (, ), ' and -, or
  • ^\s | - start of string and then one or more whitespaces, or
  • \s $| - one or more whitespaces and then end of string
  • (\s ) - Group 1: one or more whitespaces in any other context.

If Group 1 matches, the replacement is a _ char, else, the replacement is an empty string (the match is removed).

See the {}[] " rel="nofollow noreferrer">regex demo.

  •  Tags:  
  • Related