正则表达式匹配除反斜杠之外的任何字符

Vla*_*nov 4 ruby regex

我如何在Ruby字符类中说"除反斜杠之外的所有符号"?

/'[^\]*'/.match("'some string \ hello'")  => should be nil
Run Code Online (Sandbox Code Playgroud)

两个背面的变体不起作用

/'[^\\]*'/.match("'some string \ hello'")  => 'some string \ hello' BUT should be nil
Run Code Online (Sandbox Code Playgroud)

Phr*_*ogz 8

你的问题不在于你的正则表达式; 你说对了.您的问题是您的测试字符串中没有反斜杠.相反,它有一个逃逸的空间.试试这个:

str = "'some string \\ hello'"
puts str                 #=> 'some string \ hello'
p /'[^\\]*'/.match(str)  #=> nil
Run Code Online (Sandbox Code Playgroud)


Joe*_*oey 5

您需要转义反斜杠:

[^\\]*
Run Code Online (Sandbox Code Playgroud)

因为反斜杠是正则表达式中的转义字符,因此在此处转义了右括号。

如果要验证整个字符串包含非反斜杠字符,则需要锚点:

^[^\\]*$
Run Code Online (Sandbox Code Playgroud)