我有一些正則表達式將某些字段名稱與賦值表達式分開。直到現在,字段名已足夠清晰,以至於正則表達式沒有問題,但現在字段名稱正在使用非法字符(從語言語法的角度來看,本例中爲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