我希望你帮助在Ruby中制定一个正则表达式。
我想在字符串\par
之后在字符串中插入一个空格,只要符合这些条件:
\par
后面没有d\
,因此\pard\
没有。
\par
后面没有\
,因此不是\par\
。\par
不应该跟空格有关,所以不是\par
。 以下是我提出的建议:
my_string.gsub!(/(?<=\\par).(?!(\d\\)|(\S)|(\\))/, ' ')
,但目前这对我不起作用。
有什么想法吗?
答案 0 :(得分:4)
你很亲密。尝试将正则表达式更改为
(?<=\\par)(?!d\\|\s|\\)
所做的更改
将.
放在环顾四周之间。这是必需的,因为.
将由引擎
\d
至d
,因为您打算匹配d
而不是数字(\d
)
\S
至s
您已经使用了负面展望。所以\s
否定确认\par
或强>
更短的版本将是
(?<=\\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\\)(?!\\)(?! ).