正则表达式只搜索字符串

时间:2017-09-25 12:27:01

标签: regex string

我正在尝试对字符串进行一些验证。

Y0 40 98 86 A

我希望能够用O来替换前2个字符中出现的0,即Y0

我知道如何进行替换部分,但我正在努力只选择第一个。

它应匹配前两个字符中的所有0。即00 0Z

为了澄清,我不介意我只需要帮助制作正则表达式选择器的语言

1 个答案:

答案 0 :(得分:1)

一步替换

感谢@Rawing的评论:

SELECT p.idPost, p.title, t.name from posts as p, tags as t, post2tags
 WHERE t.idTags=post2tags.idTags

正则表达式意味着:

  • 字符串的开头,后跟:
    • 零,或
    • 一个字符,然后是零。

@SebastianProske的另一个变种:

"00 40 98 86 A".gsub(/^0|(?<=^.)0/, 'O')
# "OO 40 98 86 A"

这意味着:"A0 40 98 86 A".gsub(/(?<!..)0/, 'O') # "AO 40 98 86 A"

这里是test

两步更换

可能更容易分两步完成。如果第一个字符是a 0, but only when not preceded by two characters,则将其替换为O,如果它是0则替换第二个字符。

这是一个带有匹配组的ruby示例:

0

你也可以使用lookbehind:

"Y0 40 98 86 A".sub(/^0/,'O').sub(/^(.)0/,'\1O')
# "YO 40 98 86 A"