2017-02-13 118 views
1

我在PHP和其他代碼中做了很棒的工作,有以下正則表達式。Golang正則表達式 - 從lookahead轉換

/^(?:(?=[^ ]+\d)(?:[A-Z0-9]+))|(?:[A-Z0-9]+) +?(?=.*\d)(?:[A-Z0-9]+)? 

Regular expression visualization

Debuggex Demo

事實證明,轉到不支持lookheads,我就如何跨越它轉換損失。

Debuggex鏈接有一些測試數據我以前用來限定代碼。

+1

如果您可以爲正則表達式提供* exact *規範,則幫助您會更容易。目前,還不清楚你是否需要這個數字成爲比賽的一部分,或者只是要求他們在預期的比賽之後。 –

回答

1

首先,變化/^...的左側不匹配,因爲/在輸入開始之前不會出現。

也就是說只剩(?:[A-Z0-9]+) +?(?=.*\d),其可以被表示爲:

((?:[A-Z0-9]+)).*\d.* 

術語" +?"所用是在效果相同只是" "

但請注意,這會消耗比原始更多的輸入,這是不可避免的。您的原始匹配現在位於第1組。