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',但是.. –