Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何提取URL的特定部分并替换为不同的数据_Regex_Apache Flex - Fatal编程技术网

Regex 如何提取URL的特定部分并替换为不同的数据

Regex 如何提取URL的特定部分并替换为不同的数据,regex,apache-flex,Regex,Apache Flex,我有一个特定类型的url,我需要识别其中的一些部分并替换为一些数据,url应该是www.something。com@param1={{^User Name^},param2={{^User id^} 我需要做的是,识别{{^User Name^}和{{^User id^}并替换为我的值 有人想用flex做这个吗 我的一个朋友告诉我使用RegExp来实现这一点,但我不知道如何使用它。也许不是最有效或最好的解决方案,但它可以完成工作。 只需更新replace()函数即可管理不同类型的参数 publi

我有一个特定类型的url,我需要识别其中的一些部分并替换为一些数据,url应该是
www.something。com@param1={{^User Name^},param2={{^User id^}

我需要做的是,识别
{{^User Name^}
{{^User id^}
并替换为我的值

有人想用flex做这个吗


我的一个朋友告诉我使用RegExp来实现这一点,但我不知道如何使用它。

也许不是最有效或最好的解决方案,但它可以完成工作。 只需更新replace()函数即可管理不同类型的参数

public static const START_TAG:String = "{{^";
public static const END_TAG:String = "^}}";

public function replace():void {
    var url:String = "param1={{^User Name^}},param2={{^user id^}}";

    while ( getTagStartIndex(url) >= 0 ) {
      var currentTag:String = getTagContent(url);
      var value:String = "";
      if ( currentTag == "User Name" ) {
        value = "myName";
      } else if ( currentTag == "user id" ) {
        value = "myID";
      } else {
        value = "undefinedtag";
      }
      url = replaceTagWithValue(currentTag,value, url);
     }

    }

protected function getTagStartIndex(str:String):int {
    return str.indexOf(START_TAG);
}

protected function getTagEndIndex(str:String):int {
    return str.indexOf(END_TAG, getTagStartIndex(str+1));
}

protected function getTagContent(str:String):String {
    return str.substring(getTagStartIndex(str)+START_TAG.length, getTagEndIndex(str));
}

protected function replaceTagWithValue(tag:String, tagValue:String, str:String):String {
    return str.replace(START_TAG+tag+END_TAG,tagValue);
}
试一试


这方面的有用工具:

类似的东西可能会起作用,没有关于RegExp-tho的专家

var s:String = "www.something.com@param1={{^User Name^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9 ])*(\^}})/;
var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9 ])*(\^}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
var s:String=“www.something。com@param1={{^User Name^},param2={{{^User id^}”;
var userPattern:RegExp=/(?不,我需要用我的值替换整个{{{^User Name^}}部分,而不是每次我在其中获取用户名时,它可以是不同的值,但是{{{^User Name^}部分不会被更改。我想要的是标识{{}}部分并获取其中的值,在本例中为“User Name”用我的值替换整件事。也许我不清楚你想要什么,但我已经更新了我的答案。你当然可以多次调用replace来更改多个参数的值。Davz,谢谢你的想法,但问题是我不知道括号内的确切值,它可以是不同的值,s一次可以是用户名,但下次可以是其他值,例如>“地址”。因此,我无法在不知道内部内容的情况下使用替换函数,我想要的是,提取括号中的值,并使用原始参数值从另一个表中获取要替换的值,然后替换整个值。eldamar,非常感谢您的第一个解决方案在一定程度上帮助解决了问题。但是,我在使用ab时遇到了一个小问题ove regEx,当我使用它时,它返回带有附加字符的{{^User Name^}标记,类似于{{^Field Name^},{{{{^,e,^}。如果我可以去掉这些附加标记,我可以轻松地解决我的问题。其他regEx也会发生同样的情况。(userIdPattern)。我不知道我是否理解,但您需要通过将它们添加到正则表达式的[A-Za-z0-9]部分来添加{{}内的所有预期字符,例如:[A-Za-z0-9,.-@#]我所说的附加标记的意思是{^,e,^}部分。当我在脚本“s.match(userpattern)”上方运行时,它返回这个-{^字段名^},{{^,e,^}。我正在寻找一种摆脱{,e}的方法上面的部分返回值。我只需要{{^字段名^}}部分。谢谢SeldMar,很抱歉再次打扰您,您能为我提供相关的java reg exp吗?当我尝试用java编译上面的模式时,它会给我一个错误。
var s:String = "www.something.com@param1={{^User Name^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9 ])*(\^}})/;
var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9 ])*(\^}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
var s:String = "www.something.com@param1={{^User Name^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1={{)\^([A-Za-z0-9 ])*\^(?=}})/;
var userIdPattern:RegExp = /(?<=param2={{)\^([A-Za-z0-9 ])*\^(?=}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
var s:String = "www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1={{)\^([A-Za-z0-9\^}}{{, ])*(?=}})/;
var userIdPattern:RegExp = /(?<=param2={{)\^([A-Za-z0-9\^}}{{, ])*(?=}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
var s:String = "www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/;
var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');