我有一些正则表达式将某些字段名称与赋值表达式分开。直到现在,字段名已足够清晰,以至于正则表达式没有问题,但现在字段名称正在使用非法字符(从语言语法的角度来看,本例中为AS3),我开发的正则表达式正在挣扎。如果我在问题的之前,之后和详细信息中提供给你,它可能是最好的。使用正则表达式从赋值语句中捕获字段名称
我目前的正则表达式如下所示:this\.(.*)?[=,]
。到目前为止它已经工作,因为字段名称不包含=
或,
字符。但是现在,代码似乎被一些导致域名变得非法的东西混淆了,它不起作用。赋值表达式看上去有点像之前:
this._-E12=_arg1.readInt();
当时正则表达式的工作发现并抓获_-E12
。现在赋值表达式是这样的:
this.^"-=,#I.readInt();
正如你能想象的正则表达式不喜欢这么多,并捕获^"-=
它其实应该捕获^"-
代替。正则表达式中的,
有一个原因,它用于匹配如下行:_arg1.readBytes(this._-E12, 0, count);
。
我认为我在寻找的是找到=
角色的最后一个实例的方法,但这也不是一个完美的解决方案,因为没有办法保证我们不会得到一条线看起来像:this.^"-=,=I.readInt();
。
这可能是一个愚蠢的问题,在正则表达式中可能没有办法做到这一点,但所有令人惊叹的人在那里,以及正则表达式人写的大小,我肯定必须有一些东西!
对于一些更具体的例子,这里就是我在寻找:
this.^"-=,#I.readInt();
将匹配^"-
arg1.readBytes(this.^"-, 0, count);
将匹配^"-
this.0$R=readInt();
将匹配0$R
arg1.readBytes(this.0$R, 0, count);
将匹配0$R
this.^=s=readInt();
将匹配^=s
arg1.readBytes(this.^=s, 0, count);
将匹配^=s
this.$s==readInt();
将匹配$s=
arg1.readBytes(this.$s=, 0, count);
将匹配$s=
这可能适用于正则表达式,但您将不得不精确描述要查找的内容。你如何知道'='还是'''结束了字段名? – Barmar 2013-05-07 09:37:29
我不知道哪一个是我的问题。我不认为Regex可以在不使用两个单独的表达式的情况下做到这一点,并且如果两者都匹配,就可以测试。 – jduncanator 2013-05-07 09:39:28
如果你不知道字段名称的结尾,你怎么可能编程计算机来做到这一点?如果你不能清楚地解释你需要什么,我们应该如何帮助你? – Barmar 2013-05-07 09:40:45