gpt4 book ai didi

regex - 在AS3,Regexp中使用变量

转载 作者:行者123 更新时间:2023-12-04 13:24:37 26 4
gpt4 key购买 nike

使用Actionscript 3.0(在Flash CS5中)

可以匹配任何数字的标准正则表达式为:

var myRegexPattern:Regex = /\d/g;

正则表达式看起来像要包含一个字符串变量以匹配什么?
(此示例是“理想”而不是“工作”代码段),即:
var myString:String = "MatchThisText"
var myRegexPatter_WithString:Regex = /\d[myString]/g;

我已经看到了一些变通办法,其中涉及创建多个正则表达式实例,然后按源将它们与所讨论的变量组合在一起,这似乎是错误的。或使用flash字符串作为正则表达式创建者,但是它只是草率的,需要所有的 double 和三进制转义序列。

必须有一些可以在实时文档或Google上找不到的无痛苦方式。 AS3是否也拥有此功能?如果没有,那确实应该。

还是由于我对正则表达式的新颖性而错过了一个简单的方法来避免我太天真地避免执行此任务呢?

最佳答案

我实际上已经在博客上发表了文章,所以我只为您指出:http://tyleregeto.com/using-vars-in-regular-expressions-as3讨论了可能的解决方案,但是没有像您提到的理想解决方案。

编辑

这是该博客条目的重要部分的副本:

这是一个正则表达式,用于从文本块中剥离标签。

/<("[^"]*"|'[^']*'|[^'">])*>/ig

这种漂亮的表情就像是一种魅力。但是我想对其进行更新,以便开发人员可以将剥离的标签限制为数组中指定的标签。非常简单的东西,要在正则表达式中使用变量值,您首先需要将其构建为字符串,然后将其转换。类似于以下内容:
var exp:String = 'start-exp' + someVar + 'more-exp';
var regex:Regexp = new RegExp(exp);

很直截了当。因此,在进行此小升级时,这就是我所做的。当然,一个大问题很明显。
var exp:String = '/<' + tag + '("[^"]*"|'[^']*'|[^'">])*>/';

猜猜是什么,无效的字符串!最好将字符串中的引号转义。糟糕,这会破坏正则表达式!我很沮丧。因此,我打开了语言引用以查看可以找到的内容。 “源”参数(我以前从未使用过)引起了我的注意。它返回一个描述为“正则表达式的模式部分”的字符串。它完美地完成了窍门。解决方法如下:
var start:Regexp = /])*>/ig;
var complete:RegExp = new RegExp(start.source + tag + end.source);

为了方便起见,您可以将其简化为:
var complete:RegExp = new RegExp(/])*>/.source + tag, 'ig');

关于regex - 在AS3,Regexp中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com