2024-10-03 04:25:52 发布
网友
有没有可靠的方法从给定的正则表达式和“匹配”结果构造字符串?你知道吗
我在找这样的东西:
stringConstruct('/My name is (?P<name>.*)/', {name: John});
结果是“我叫约翰”。所以我需要逆向函数来匹配regexp。你知道吗
用任何非语言回答都是合适的。你知道吗
您可以编写自己的函数。我用Java做过一次,这里有一个例子。某人是一根弦。replaceMap是(regexp,replaceStr)映射:
public static boolean replaceAll(StringBuffer sb, Map<String,String> replaceMap) { boolean altered = false; Iterator<String> it = replaceMap.keySet().iterator(); while (it.hasNext()) { String toReplace = it.next(); Matcher mat = Pattern.compile(toReplace).matcher(sb); while (mat.find()) { if (!altered) { altered = true; } String str = (String) replaceMap.get(toReplace); sb.replace(mat.start(), mat.end(), str); mat.region(mat.start() + str.length(), sb.length()); } } return altered; }
简单的回答是“不”——这不是regex的用途。你知道吗
但是,你可以这样做:
function stringConstruct($stringTemplate, $regex, $input){ if(preg_match($regex, $input)){ return str_replace($regex, $input, $stringTemplate); } else { return false; } }
但是,你必须这样使用它:
echo stringConstruct('My name is /(?P<name>.*)/', '/(?P<name>.*)/', "John");
您可以编写自己的函数。我用Java做过一次,这里有一个例子。某人是一根弦。replaceMap是(regexp,replaceStr)映射:
简单的回答是“不”——这不是regex的用途。你知道吗
但是,你可以这样做:
但是,你必须这样使用它:
echo stringConstruct('My name is /(?P<name>.*)/', '/(?P<name>.*)/', "John");
相关问题 更多 >
编程相关推荐