Index: source/ariba/Makefile.am
===================================================================
--- source/ariba/Makefile.am	(revision 2440)
+++ source/ariba/Makefile.am	(revision 2444)
@@ -308,5 +308,8 @@
   utility/misc/OvlVis.h \
   utility/misc/sha1.cpp \
-  utility/misc/sha1.h
+  utility/misc/sha1.h \
+  utility/misc/StringFormat.cpp \
+  utility/misc/StringFormat.h 
+  
 
 #utility :: serialization
Index: source/ariba/utility/misc/StringFormat.cpp
===================================================================
--- source/ariba/utility/misc/StringFormat.cpp	(revision 2444)
+++ source/ariba/utility/misc/StringFormat.cpp	(revision 2444)
@@ -0,0 +1,41 @@
+
+#include "StringFormat.h"
+
+#include "boost/xpressive/xpressive.hpp"
+
+using namespace boost::xpressive;
+
+// regex: string
+const sregex StringFormat::rstring = '"' >> keep(*~(boost::xpressive::set = '"'))
+		>> '"';
+
+// regex: base64 encoding
+const sregex StringFormat::rbase64 = '!' >> +(range('a', 'z') | range('A', 'Z')
+		| range('0', '9') | '/' | '+') >> *(boost::xpressive::set = '=');
+
+// regex: raw alphabet
+const sregex StringFormat::rchars = +(range('a', 'z') | range('A', 'Z'));
+
+// regex: integer
+const sregex StringFormat::rint = '0' | (range('1', '9') >> !(range('0', '9')));
+
+// regex: binary label
+const sregex StringFormat::rlabel = rchars | rstring | rbase64;
+
+// regex: dot separated identifier
+const sregex StringFormat::rid = rlabel >> *('.' >> rlabel) >> *('.' >> rint);
+
+// regex: "leaf" data
+const sregex StringFormat::rdata = !(boost::xpressive::set = '!') >> '{'
+		>> *(keep(+~(boost::xpressive::set = '{', '}')) | by_ref(rdata))
+		>> '}';
+
+// regex: fields
+const sregex StringFormat::rfield_label = rlabel >> '=';
+const sregex StringFormat::rfield = !rfield_label >> (rid | rdata);
+const sregex StringFormat::rfields = '(' >> rfield >> *(',' >> rfield) >> ')';
+
+// regex: objects
+const sregex StringFormat::robject_data = (rdata | rfields);
+const sregex StringFormat::robject = rid >> robject_data;
+const sregex StringFormat::robjects = robject >> *(',' >> robject);
Index: source/ariba/utility/misc/StringFormat.h
===================================================================
--- source/ariba/utility/misc/StringFormat.h	(revision 2444)
+++ source/ariba/utility/misc/StringFormat.h	(revision 2444)
@@ -0,0 +1,48 @@
+
+#ifndef STRINGFORMAT_H_
+#define STRINGFORMAT_H_
+
+#include "boost/xpressive/xpressive.hpp"
+
+using boost::xpressive::sregex;
+
+/**
+ * This class defines some regular expressions ...
+ *
+ * @author Sebastian Mies
+ */
+class StringFormat {
+public:
+	// regex: string
+	static const sregex rstring;
+
+	// regex: base64 encoding
+	static const sregex rbase64;
+
+	// regex: raw alphabet
+	static const sregex rchars;
+
+	// regex: integer
+	static const sregex rint;
+
+	// regex: binary label
+	static const sregex rlabel;
+
+	// regex: dot separated identifier
+	static const sregex rid;
+
+	// regex: "leaf" data
+	static const sregex rdata;
+
+	// regex: fields
+	static const sregex rfield_label;
+	static const sregex rfield;
+	static const sregex rfields;
+
+	// regex: objects
+	static const sregex robject_data;
+	static const sregex robject;
+	static const sregex robjects;
+};
+
+#endif /* STRINGFORMAT_H_ */
