src/Pure/library.scala
changeset 64871 2d594dabcca6
parent 64820 00488a8c042f
child 65606 d2f83588080f
--- a/src/Pure/library.scala	Wed Jan 11 14:22:57 2017 +0100
+++ b/src/Pure/library.scala	Wed Jan 11 14:48:07 2017 +0100
@@ -196,6 +196,15 @@
   def make_regex(s: String): Option[Regex] =
     try { Some(new Regex(s)) } catch { case ERROR(_) => None }
 
+  def is_regex_meta(c: Char): Boolean = """()[]{}\^$|?*+.<>-=!""".contains(c)
+
+  def escape_regex(s: String): String =
+    if (s.exists(is_regex_meta(_))) {
+      (for (c <- s.iterator)
+       yield { if (is_regex_meta(c)) "\\" + c.toString else c.toString }).mkString
+    }
+    else s
+
 
   /* lists */