Ruby Regex:如果遇到一组字符,则插入空格

时间:2015-01-21 16:04:27

标签: ruby regex

我希望你帮助在Ruby中制定一个正则表达式。

我想在字符串\par之后在字符串中插入一个空格,只要符合这些条件:

    {li> \par后面没有d\,因此\pard\没有。
  1. \par后面没有\,因此不是\par\
  2. 并且\par不应该跟空格有关,所以不是\par
  3. 以下是我提出的建议:

    my_string.gsub!(/(?<=\\par).(?!(\d\\)|(\S)|(\\))/, ' '),但目前这对我不起作用。

    有什么想法吗?

3 个答案:

答案 0 :(得分:4)

你很亲密。尝试将正则表达式更改为

(?<=\\par)(?!d\\|\s|\\)

所做的更改

  • .放在环顾四周之间。这是必需的,因为.将由引擎

  • 匹配和使用
  • \dd,因为您打算匹配d而不是数字(\d

  • \Ss您已经使用了负面展望。所以\s否定确认\par

  • 之后没有空格

Rubular Demo

更短的版本将是

(?<=\\par)(?!d?\\|\s)

答案 1 :(得分:1)

这是另一种方式,它只使用否定前瞻:

def stuff_space_maybe(s)
  s.gsub(/\\par(?!\s|d?\\)/,'\par ')
end

stuff_space_maybe("let's \\part\\y!")
  #=> "let's \\par t\\y!" 
stuff_space_maybe("let's \\pard\\y!")
  #=> "let's \\pard\\y!" 
stuff_space_maybe("let's \\par\\y!")
  #=> "let's \\par\\y!" 
stuff_space_maybe("let's \\par\\ty!")
  #=> "let's \\par\\ty!" 

答案 2 :(得分:0)

我对你究竟想要什么有点困惑,这个?

\\par(?!d\\)(?!\\)(?! ).