diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2017-06-13 22:05:52 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2017-06-13 22:08:41 -0400 |
| commit | 1fbfe779e6758d0f7e9143ea2a00ad050ab8c6aa (patch) | |
| tree | 3a9fe080f9cd591532b5788294c13bd002246dd2 /regexp | |
| parent | bc52886c7cf83bcbd4e4ae96ab4b0e2a84d527e7 (diff) | |
Adding regexp support
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'regexp')
| -rw-r--r-- | regexp/regexp.go | 15 | ||||
| -rw-r--r-- | regexp/regexp_test.go | 23 |
2 files changed, 38 insertions, 0 deletions
diff --git a/regexp/regexp.go b/regexp/regexp.go new file mode 100644 index 00000000..8aeaa43c --- /dev/null +++ b/regexp/regexp.go @@ -0,0 +1,15 @@ +package regexp + +import stdre "regexp" + +// Replace - +func Replace(expression, replacement, input string) string { + re := stdre.MustCompile(expression) + return re.ReplaceAllString(input, replacement) +} + +// Match - +func Match(expression, input string) bool { + re := stdre.MustCompile(expression) + return re.MatchString(input) +} diff --git a/regexp/regexp_test.go b/regexp/regexp_test.go new file mode 100644 index 00000000..15adccd4 --- /dev/null +++ b/regexp/regexp_test.go @@ -0,0 +1,23 @@ +package regexp + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestReplace(t *testing.T) { + assert.Equal(t, "-T-T-", Replace("a(x*)b", "T", "-ab-axxb-")) + assert.Equal(t, "--xx-", Replace("a(x*)b", "$1", "-ab-axxb-")) + assert.Equal(t, "---", Replace("a(x*)b", "$1W", "-ab-axxb-")) + assert.Equal(t, "-W-xxW-", Replace("a(x*)b", "${1}W", "-ab-axxb-")) + + assert.Equal(t, "Turing, Alan", Replace("(?P<first>[a-zA-Z]+) (?P<last>[a-zA-Z]+)", "${last}, ${first}", "Alan Turing")) +} + +func TestMatch(t *testing.T) { + assert.True(t, Match(`^[a-z]+\[[0-9]+\]$`, "adam[23]")) + assert.True(t, Match(`^[a-z]+\[[0-9]+\]$`, "eve[7]")) + assert.False(t, Match(`^[a-z]+\[[0-9]+\]$`, "Job[48]")) + assert.False(t, Match(`^[a-z]+\[[0-9]+\]$`, "snakey")) +} |
