]> git.lyx.org Git - lyx.git/blobdiff - src/support/regex.h
Unbreak citing from bibliography environment
[lyx.git] / src / support / regex.h
index 0c85075882ba2e3f10ef5c5b169e821f2037161d..96498708fcee8047a44ab9ada5c369bfbb7c2f53 100644 (file)
 #ifndef LYX_REGEXP_H
 #define LYX_REGEXP_H
 
-#if defined(LYX_USE_TR1) && defined(LYX_USE_TR1_REGEX)
-#  ifdef _MSC_VER
-#    include <regex>
-#    define match_partial _Match_partial
-#  else
-#    include <tr1/regex>
-//   TODO no match_partial in gcc, how to replace?
-#    define match_partial match_default
-#  endif
-#  define LR_NS std::tr1
-#else 
+#ifdef LYX_USE_STD_REGEX
+#  include <regex>
+// <regex> in gcc is unusable in versions less than 4.9.0
+// see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
+#  define LR_NS std
+#else
 #  include <boost/regex.hpp>
 #  define LR_NS boost
 #endif
 
 namespace lyx {
 using LR_NS::regex;
-using LR_NS::smatch;   
+using LR_NS::regex_match;
 using LR_NS::regex_replace;
-using LR_NS::basic_regex;      
-using LR_NS::regex_error;      
 using LR_NS::regex_search;
 using LR_NS::sregex_iterator;
+using LR_NS::smatch;
+using LR_NS::basic_regex;
+using LR_NS::regex_error;
 using LR_NS::match_results;
 
 namespace regex_constants
 {
 using namespace LR_NS::regex_constants;
 using LR_NS::regex_constants::match_flag_type;
-}
+} // namespace regex_constants
 
-}
+} // namespace lyx
 
 #undef LR_NS
 
+#ifdef LYX_USE_STD_REGEX
+// Match Begin and End of String when using ECMAScript (default std::regex)
+#define REGEX_BOS "^"
+#define REGEX_EOS "$"
+#else
+// Match Begin and End of String when using Perl RE (default boost::regex)
+#define REGEX_BOS "\\`"
+#define REGEX_EOS "\\'"
+#endif
+
 #endif