Ruby正则表达式行尾

时间:2010-02-26 22:57:55

标签: ruby regex

我试图在字符串中找到变量,例如

"%0" can not be found. %1 Please try again %2

我需要知道每个变量如何结束(空格,句点,行尾)因为我将检查此字符串的翻译版本中是否存在相同的变量。文本来自CSV,字符串不以换行符结束。

我能够捕获除了字符串末尾的所有内容:

reg = /[%@!][^\s]+[\s\.\z$]+/

我认为$\z应匹配行尾,但这似乎不起作用。如何在上述场景中捕获%2? (同样,最后没有换行符)

2 个答案:

答案 0 :(得分:4)

$匹配行尾,但不是在括号内使用时。写[$]是你如何寻找正常的美元符号字符'$'。

如果您要搜索的字符串是您在上面列出的确切字符串,请尝试

reg = /^"(.*)" can not be found[.] (.*) Please try again (.*)$/
error_string =~ reg

您的三个匹配结果将存储在特殊变量$1$2$3中。

答案 1 :(得分:0)

好的,我用不同的方法解决了这个问题。使用正向前瞻作为角色类不需要

/[%@!][\w]+(?=\s|\z|\.|\W)/

对于示例字符串,返回:

%0

%1

%2