Solved
Contributor
Posts: 30

# Regular Expression

[ Edited ]

Hi,

Can any body explaine below code (PRXCHANGE)

I don't understand why they are using '#' and 'S'

DIR=prxchange("s#/+#/#", -1, DIR);

DIR=prxchange("s#^(/project\d+/)#/projects/#", 1, cats(DIR));

Accepted Solutions
Solution
‎02-20-2017 04:46 AM
Posts: 1,300

## Re: Regular Expression

[ Edited ]

the 's' before the regular expression is referred to as a pattern-matching modifier, and denotes that the expression is a substition/replacement expression.

the '#' is just acting as a delimiter.  common delimiters are "/" or "#" or "{}" or "[]" typically

```s#/+#/#

=

s/\/+/\//```

When you use # instead of / as the delimiter, you make a pattern matching expression that would normally use the default delimiter, like the example, simpler, since you don't have to escape it

The patter above is simple:

match the "/" character 1 or more times, as many as possible without encounter some other token and replace that match with a single "/"

```s#^(/project\d+/)#/projects/#

or

s#^/project\d+/#/projects/#

or

s/^\/project\d+\//\/projects\//```

matches a string where, at the beginning is starts with "/project" followed by 1 or more numbers and ending with "/" such as "/project1234/" and changes it to "/projects/"

All Replies
Regular Contributor
Posts: 194

## Re: Regular Expression

Hello,

The search patterns contain slashes so the '#' are used in place of the '/' as patterns delimiters.
It avoids having to protect the '/'.
's' is the substitution operator.
So the first command, for instance, replaces several consecutive slashes by a unique slash in the DIR string.
Solution
‎02-20-2017 04:46 AM
Posts: 1,300

## Re: Regular Expression

[ Edited ]

the 's' before the regular expression is referred to as a pattern-matching modifier, and denotes that the expression is a substition/replacement expression.

the '#' is just acting as a delimiter.  common delimiters are "/" or "#" or "{}" or "[]" typically

```s#/+#/#

=

s/\/+/\//```

When you use # instead of / as the delimiter, you make a pattern matching expression that would normally use the default delimiter, like the example, simpler, since you don't have to escape it

The patter above is simple:

match the "/" character 1 or more times, as many as possible without encounter some other token and replace that match with a single "/"

```s#^(/project\d+/)#/projects/#

or

s#^/project\d+/#/projects/#

or

s/^\/project\d+\//\/projects\//```

matches a string where, at the beginning is starts with "/project" followed by 1 or more numbers and ending with "/" such as "/project1234/" and changes it to "/projects/"

☑ This topic is SOLVED.