diff --git a/includes/field_mapping.inc b/includes/field_mapping.inc
index cf7fc4c..cf7c386 100644
--- a/includes/field_mapping.inc
+++ b/includes/field_mapping.inc
@@ -66,6 +66,17 @@ class MigrateFieldMapping {
   }
 
   /**
+   * Use regex for separation? If set to true the separator will be interpreted
+   * as a regular expression for more powerful separation.
+   *
+   * @var boolean
+   */
+  protected $separatorRegex;
+  public function getSeparatorRegex() {
+    return $this->separatorRegex;
+  }
+
+  /**
    * Class name of source migration for a field. If present, the value in the
    * source field is considered to be a source ID in the mapping table of this
    * migration, and the corresponding destination ID will be retrieved.
@@ -166,8 +177,9 @@ class MigrateFieldMapping {
     return $this;
   }
 
-  public function separator($separator) {
+  public function separator($separator, $separatorRegex = FALSE) {
     $this->separator = $separator;
+    $this->separatorRegex = $separatorRegex;
     return $this;
   }
 
diff --git a/includes/migration.inc b/includes/migration.inc
index 761f19b..0a3ab2e 100644
--- a/includes/migration.inc
+++ b/includes/migration.inc
@@ -1198,8 +1198,19 @@ abstract class Migration extends MigrationBase {
         // If there's a separator specified for this destination, then it
         // will be populated as an array exploded from the source value
         $separator = $mapping->getSeparator();
+
+        // Determine if the separator should be interpreted as a Regex.
+        $separatorRegex = $mapping->getSeparatorRegex();
+
         if ($separator && isset($destination_values)) {
-          $destination_values = explode($separator, $destination_values);
+          // Use REGEX to separate values if selected.
+          if ($separatorRegex) {
+            $destination_values = preg_split($separator, $destination_values);
+          }
+          // Use explode to separate values by string.
+          else {
+            $destination_values = explode($separator, $destination_values);
+          }
         }
 
         // If a source migration is supplied, use the current value for this field
