我有一些正则表达式将一些字段名称与赋值表达式分开。到目前为止,字段名称已经足够理智,正则表达式可以正常工作,但现在字段名称使用非法字符(从语言语法的角度来看,在这种情况下为 AS3),我开发的正则表达式正在苦苦挣扎。如果我给你一个问题的之前、之后和细节,这可能是最好的。
我当前的正则表达式如下所示:this\.(.*)?[=,]
. 到目前为止,它一直有效,因为字段名称不包含=
or,
字符。然而,现在代码似乎被一些导致字段名称变得非法的东西混淆了,它不起作用。在赋值表达式看起来像之前:
this._-E12=_arg1.readInt();
当时正则表达式工作 find 和 capture _-E12
。现在赋值表达式如下所示:
this.^"-=,#I.readInt();
正如您可以想象的那样,正则表达式不太喜欢它,而是捕获^"-=
它实际上应该捕获的位置^"-
。正,
则表达式中的 存在是有原因的,并且它用于匹配以下行:_arg1.readBytes(this._-E12, 0, count);
。
我想我正在寻找的是某种方法来找到=
角色的最后一个实例,但这也不是一个完美的解决方案,因为没有办法保证我们不会得到看起来像这样的行:this.^"-=,=I.readInt();
.
这可能是一个愚蠢的问题,在 Regex 中可能没有办法做到这一点,但是有所有了不起的人,以及人们编写的 regex 的大小,我相信一定有什么!
对于一些更具体的例子,这是我正在寻找的:
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=