从正则表达式和结果构造字符串(反向匹配)

2024-10-03 04:25:52 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可靠的方法从给定的正则表达式和“匹配”结果构造字符串?你知道吗

我在找这样的东西:

stringConstruct('/My name is (?P<name>.*)/', {name: John});

结果是“我叫约翰”。所以我需要逆向函数来匹配regexp。你知道吗

用任何非语言回答都是合适的。你知道吗


Tags: 方法函数字符串name语言ismyjohn
2条回答

您可以编写自己的函数。我用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");

相关问题 更多 >