【发布时间】:2013-05-08 19:29:45
【问题描述】:
我目前有这个正则表达式:this\.(.*)?\s[=,]\s,但是我遇到了一个无法修复的泡菜。
我尝试了以下正则表达式,它有效,但它也捕获了我不想要的空间:this\.(.*)?(?<=\s)=|(?<!\s),。我想要做的是匹配标识符名称。我想要的一个例子和结果是这样的:
this.""W = blah; 将匹配 ""W。上面的第二个正则表达式几乎完美地做到了这一点,但是它也捕获了第一组中= 之前的空间。有人可以指出正确的方向来解决这个问题吗?
编辑:不简单地在通配符组中使用[^\s] 的原因是有时我可以得到这样的行:this. "$ = blah;
EDIT2:现在我有另一个问题。它与param1.readBytes(this.=!3,0,param1.readInt()); 之类的行不匹配。而不是匹配=!3,而是匹配=!3,0。有没有办法来解决这个问题?同样,我不能简单地使用[^,],因为可能有像param1.readBytes(this.,3$,0,param1.readInt()); 这样的名称应该匹配,3$。
【问题讨论】:
-
您用什么语言编写程序?
-
那么如何判断逗号是属于 this.identifier 还是作为函数参数的分隔符?
-
有没有办法在正则表达式中向后阅读?例如,从
;开始并返回直到通过两个,然后开始捕获直到找到this.?或者那不可能…… -
那么如果第三个参数中有一个
this.,3$会发生什么? -
它不会,如果是,那么我想提取它,这样正则表达式仍然有效。我想我可以通过锚定到行尾然后做类似
this\.(.*)?,.*?,.*);$来解决Edit2
标签: regex