2
0
Эх сурвалжийг харах

[python] check for null capture groups in EReg.replace (closes #5237)

Dan Korostelev 9 жил өмнө
parent
commit
b3c74e3c6e

+ 4 - 2
std/python/_std/EReg.hx

@@ -106,8 +106,10 @@ class EReg {
 			var res = by;
 			var g = x.groups();
 			for (i in 0...g.length) {
-
-				res = res.split("$"+UBuiltins.str(i+1)).join(g[i]);
+				var gs = g[i];
+				if (gs == null)
+					continue;
+				res = res.split("$"+UBuiltins.str(i+1)).join(gs);
 			}
 			res = res.split("_hx_#repl#__").join("$");
 			return res;

+ 2 - 0
tests/unit/src/unitstd/EReg.unit.hx

@@ -99,6 +99,8 @@ pos.len == 2;
 #end
 
 ~/a(b)c/g.replace("abcabc", "$1") == "bb";
+~/(a)|(b)/.replace("abc", '*') == "*bc";
+~/(a)|(b)/g.replace("abc", '*') == "**c";
 
 // map
 ~/(Hello)/.map("Hello World", function(e) return "Hallo") == "Hallo World";