summaryrefslogtreecommitdiff
path: root/regexp
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2017-06-13 22:05:52 -0400
committerDave Henderson <dhenderson@gmail.com>2017-06-13 22:08:41 -0400
commit1fbfe779e6758d0f7e9143ea2a00ad050ab8c6aa (patch)
tree3a9fe080f9cd591532b5788294c13bd002246dd2 /regexp
parentbc52886c7cf83bcbd4e4ae96ab4b0e2a84d527e7 (diff)
Adding regexp support
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'regexp')
-rw-r--r--regexp/regexp.go15
-rw-r--r--regexp/regexp_test.go23
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"))
+}