1
我想對字符串做一些驗證。正則表達式只搜索字符串的一部分
Y0 40 98 86 A
我希望能夠取代它發生0
的前2個字符,即Y0
帶O的。
我知道該怎麼做替換一部分,但我在努力只是選擇第一0
應該說前兩個字符內匹配全0。即00
0Z
等
爲了澄清,我不介意,我只是需要什麼語言幫助使正則表達式選擇
我想對字符串做一些驗證。正則表達式只搜索字符串的一部分
Y0 40 98 86 A
我希望能夠取代它發生0
的前2個字符,即Y0
帶O的。
我知道該怎麼做替換一部分,但我在努力只是選擇第一0
應該說前兩個字符內匹配全0。即00
0Z
等
爲了澄清,我不介意,我只是需要什麼語言幫助使正則表達式選擇
感謝@Rawing的評論:
"00 40 98 86 A".gsub(/^0|(?<=^.)0/, 'O')
# "OO 40 98 86 A"
正則表達式表示:
另一變型由@SebastianProske:
"A0 40 98 86 A".gsub(/(?<!..)0/, 'O')
# "AO 40 98 86 A"
這意味着:a 0, but only when not preceded by two characters
。
這是test。
這可能更容易分兩步進行。如果是0
,則用O
替換第一個字符,如果是0
,則替換第二個字符。
這裏有一個匹配組紅寶石例如:
"Y0 40 98 86 A".sub(/^0/,'O').sub(/^(.)0/,'\1O')
# "YO 40 98 86 A"
你也可以使用一個回顧後:
"Y0 40 98 86 A".sub(/^0/,'O').sub(/(?<=^.)0/,'O')
=> "YO 40 98 86 A"
是的,我怕這可以得出這樣的,雖然這將是最好選擇他們都在一個。 – Liably
爲什麼不把這兩個正則表達式合併成一個正則表達式? '/^0 |(?<= ^。)0 /' –
使用lookbehinds可以使用'(?<!..)0',但是.. –