我正在尋找一個 GoLang RE2 正則表達式,如果用戶鍵入以下內容之一,它只會不匹配,所有這些都不能區分大小寫:.i l .i Latest .info l .info Latest p!i l p!i latest p!info l p!info latest因此,在每一種情況下,如果用戶只輸入前綴而沒有latestor之后,或者在前綴之外和之后輸入l任何其他內容,包括任何數字或特殊字符,則在每一種情況下,它都有一個前綴和一個屬性。這應該是一場比賽。latestl我已經杰里操縱了這個正則表達式: (?i)\A\.i (?:L.|[^L]+L)這個正則表達式有些工作,但它只適用于.i前綴并檢查L前面的 a 而不檢查數字。我無法思考如何解決這個問題。我不介意使用多個正則表達式,每個前綴一個。我嘗試將 替換為\.i其他前綴,將(?:L.|[^L]+L)部分替換為LATEST. 這似乎不起作用。謝謝您的幫助 : )
1 回答

月關寶盒
TA貢獻1772條經驗 獲得超5個贊
Go 不支持環視。在這種情況下,您可以指定允許匹配的內容。
在這種情況下,您允許任何前綴可選地后跟除“l”或“latest”之外的“word”
一種選擇可能是
(?i)^(?:\.|p!)i(?:nfo)?\b(?:(?: +(?:la(?:t(?:e(?:s(?:t\S)?)?)?)?)| +(?:[^\sl]\S*|l[^\sa]\S*|la[^\st]\S*|lat[^\se]\S*|late[^\ss]\S*|lates[^\st]|latest\S+))(?: +.*)?)?$
在零件
(?i)
不區分大小寫的修飾符^
字符串的開始(?:\.|p!)i
匹配.i
或p!i
(?:nfo)?\b
可選匹配nfo
后跟單詞邊界(?:
非捕獲組+(?:la(?:t(?:e(?:s(?:t\S)?)?)?)?)
匹配 1+ 個空格和la
lat
late
lates
或latest
(后跟至少一個非空白字符以表示最新)|
或者+(?:[^\sl]\S*|l[^\sa]\S*|la[^\st]\S*|lat[^\se]\S*|late[^\ss]\S*|lates[^\st]|latest\S+)
匹配 1+ 個空格后跟 6 個變體,這些變體可以以相同的單詞開頭,不包括 1 個字符(也排除使用 的空白字符\s
),或匹配后跟至少一個空白字符的單詞(?:
非捕獲組)
關閉非捕獲組(?: +.*)?
可選匹配 1+ 個空格和 0+ 次除換行符以外的任何字符)?
關閉非捕獲組并使其可選$
字符串結束
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消