我已經在Mysql中使用正則表達式在一定程度上在MySql記錄(例如Init Cap,All Caps)中查找各種字符串模式。我試圖找到一個更復雜的模式,其中還包括可選字符串。我知道如果我只是搜索所有可能的模式,它會工作,但試圖查看正則表達式是否比這更強大,並會幫助我至少減少我需要搜索的模式。基本上這種模式是數字後綴。RegEx for#/使用MySql的文本模式
1)模式的開始總是一個#但是從1-5位數的任何地方。我寧願不必搜索[0-9],然後[0-9] [0-9]等。換句話說,搜索1到9999的任何數字字符串(無前導零)的某種方式
2)前導數字和後綴之間最多可以有三個單詞。再次,我寧願不必與1,2和3個單詞匹配模式。很顯然,如果我必須對每個版本的數字進行此操作,我已經有4 * 3個模式可供搜索,效率不高
3)有一個可選的修飾詞,可以是中間詞後,後綴。如上所述,我傾向於這樣表示,從本質上來說,我可以簡單地創建一個包含以下邏輯的正則表達式:
[最多4位數] [已知修飾詞列表中的可選修飾符] [一個到三個未知單詞] [已知後綴單詞列表的後綴] [已知變體單詞列表中的後綴]
RegEx是否甚至部分完成該任務,如果願意的話,任何幫助都可以啓動。
對於關於shorthands的筆記+1,它已經有一段時間了,因爲我已經在MySQL。 – Sam
在這兩種情況下的偉大建議謝謝。回答你的「什麼是一個詞?」它實際上是兩個或更多字母(不是#)的任意組合,情況不是問題。重要的標識符是起始數字和後綴,它們可以只是10-20個字符串中的一個(並且可選的後綴修飾符可以是10中的一個)。 Anytihng可以介於真實而實際的情況下,這將是最多三個字。因此Digit(KnownModifer)1-3Words後綴(KnownModifier)。我願意失去(罕見的)4 Words,因爲這將開始讓我的字符串匹配不是實際的模式匹配。 –
不會被擊斃,但更準確地說,這是:[1-4NumberDigit] [可選:10個已知Modifer詞中的任意1個] [任意2個字母或更多不區分大小寫的AlphaWord] [可選任意2個字母或更多不區分大小寫的AlphaWord ] [可選:2個字母或更多不區分大小寫的任意AlphaWord] [10個已知後綴詞中的任意1個] [可選:10個已知修飾詞中的任意1個] –