summaryrefslogtreecommitdiffhomepage
path: root/examples/regex_replace.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/regex_replace.c')
-rw-r--r--examples/regex_replace.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/examples/regex_replace.c b/examples/regex_replace.c
index d57dede8..0b6c9a1e 100644
--- a/examples/regex_replace.c
+++ b/examples/regex_replace.c
@@ -1,7 +1,6 @@
#define i_implement
#include <stc/cstr.h>
#include <stc/cregex.h>
-#include <stc/csview.h>
cstr sub_20y(int i, csview m) {
if (i == 1) { // year
@@ -19,26 +18,31 @@ int main()
c_auto (cstr, str)
{
- printf("input: %s\n", input);
- /* European date format */
- cstr_take(&str, cregex_replace_pat(input, pattern, "\\3.\\2.\\1"));
- printf("euros: %s\n", cstr_str(&str));
+ printf("input: %s\n\n", input);
+
+ /* replace with a fixed string, extended all-in-one call: */
+ cstr_take(&str, cregex_replace_p(input, pattern, "YYYY-MM-DD"));
+ printf("fixed: %s\n", cstr_str(&str));
/* US date format, and subtract 20 years: */
- cstr_take(&str, cregex_replace_patx(input, pattern, "\\1/\\3/\\2", sub_20y, 0, 0));
+ cstr_take(&str, cregex_replace_pe(input, pattern, "\\1/\\3/\\2", sub_20y, 0, 0));
printf("us-20: %s\n", cstr_str(&str));
- /* replace with a fixed string: */
- cstr_take(&str, cregex_replace_pat(input, pattern, "YYYY-MM-DD"));
- printf("fixed: %s\n", cstr_str(&str));
-
/* Wrap first date inside []: */
- cstr_take(&str, cregex_replace_patx(input, pattern, "[\\0]", NULL, 1, 0));
+ cstr_take(&str, cregex_replace_pe(input, pattern, "[\\0]", NULL, 1, 0));
printf("brack: %s\n", cstr_str(&str));
/* Wrap all words in {} */
- cstr_take(&str, cregex_replace_pat("[52] apples and [31] mangoes", "[a-z]+", "{\\0}"));
+ cstr_take(&str, cregex_replace_p("[52] apples and [31] mangoes", "[a-z]+", "{\\0}"));
printf("curly: %s\n", cstr_str(&str));
+
+ /* European date format, compile RE separately */
+ cregex re = cregex_from(pattern, 0);
+ if (cregex_captures(&re) == 0)
+ continue;
+ cstr_take(&str, cregex_replace(input, &re, "\\3.\\2.\\1", NULL, 0));
+ cregex_drop(&re);
+ printf("euros: %s\n", cstr_str(&str));
}
}