diff --git a/libwccl/ops/functions/bool/predicates/regex.cpp b/libwccl/ops/functions/bool/predicates/regex.cpp
index 1e4a7d8ff079bc213268bd17cb4f2f02a7f1c274..93cfaf90ec5b6ce91a4bfb38efc2bbeada4db4dc 100644
--- a/libwccl/ops/functions/bool/predicates/regex.cpp
+++ b/libwccl/ops/functions/bool/predicates/regex.cpp
@@ -11,21 +11,19 @@ RegexParseError::RegexParseError(
 	const UErrorCode& status_code,
 	const UParseError& parse_error)
 	: WcclError("Could not parse regular expression."),
+	  pattern(pattern),
 	  status(u_errorName(status_code)),
-	  pattern_line(parse_error.line),
-	  offset(parse_error.offset),
-	  pre_context(PwrNlp::to_utf8(UnicodeString(parse_error.preContext))),
-	  error(PwrNlp::to_utf8(UnicodeString(parse_error.postContext))),
-	  expression(PwrNlp::to_utf8(UnicodeString(pattern)))
+	  upe(parse_error)
 {
 }
 
 std::string RegexParseError::info() const
 {
 	std::stringstream ss;
-	ss << "Could not parse regular expression at line " << pattern_line
-		<< " offset " << offset << ". Status: " << status
-		<< ". Error: " << error << ". Expression was: " << expression;
+	ss << "Could not parse regular expression at line " << upe.line
+		<< " offset " << upe.offset << ". Status: " << status
+		<< ". Error: " << PwrNlp::to_utf8(UnicodeString(upe.postContext))
+	    << ". Expression was: " << PwrNlp::to_utf8(pattern);
 	return ss.str();
 }
 
diff --git a/libwccl/ops/functions/bool/predicates/regex.h b/libwccl/ops/functions/bool/predicates/regex.h
index 7304239c6ed859605a65a8c3e02f55f7cf9ab89a..367eb96e989b9dfee949287fa967f739bd5ebcd8 100644
--- a/libwccl/ops/functions/bool/predicates/regex.h
+++ b/libwccl/ops/functions/bool/predicates/regex.h
@@ -68,12 +68,9 @@ public:
 	
 	std::string info() const;
 
-	const std::string status;
-	const int pattern_line;
-	const int offset;
-	const std::string pre_context;
-	const std::string error;
-	const std::string expression;
+	UnicodeString pattern;
+	std::string status;
+	UParseError upe;
 };
 
 } /* end ns Wccl */