[英]RegEx and MySQL basics - replacing a varying part of a string
我的表中有一個字段,其中包含表示某些對象級別的字符串,如下所示:
"<3<"
"<3<5<"
"<3<5<49<"
等等
我有一個函數,要從這樣的字符串中刪除一個級別,而又不知道該級別在字符串本身中的位置。 具體來說,我想刪除“ 3”。 結果應為:
"0"
"<5<"
"<5<49<"
但是,如果我想刪除5,而不是3,結果應該是這樣的:
"<3<"
"<3<"
"<3<49<"
最后,如果我選擇刪除49而不是3或5,我想得到這個:
"<3<"
"<3<5<"
"<3<5<"
如您所見,要刪除的子字符串的位置有所不同-有時是最左邊的,有時是中間的,有時是最右邊的。 畢竟,重要的是:
是否有使用php和mysql處理正則表達式的簡單方法,還是我應該進行3次手動檢查?
附言:盡管我可能這樣說,但這不是家庭作業,而是實際的工作問題。
您可以分2個步驟進行操作。 假設您輸入的是這個
"<3<"
"<3<5<"
"<3<5<49<"
並且您要刪除數字3:
步驟1.由於值始終以“ <”開頭,因此您可以嘗試將“ <3”替換為“”。 然后輸入變為
"<"
"<5<"
"<5<49<"
步驟2.將等於“ <”的字符串替換為0。然后您可以得到
"0"
"<5<"
"<5<49<"
如果要刪除5或49,也是如此。我認為您可以輕松地使用正則表達式來執行這些步驟。
對於每行兩次替換:(例如,您要刪除“ 3”)
replace "^<3<$" -> "0";
replace "<3" -> "";
第一步:
replace "<3(?=<)"
使用前瞻性很重要,否則您可能要替換* <3 * 4之類的東西,而這不是您想要的。
第二步:
replace "^<$" with "0"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.