Ruby Regex:解析字母和数字,不包括新行

时间:2014-09-02 03:39:46

标签: ruby regex

我有以下字符串:

\" A B 10\\n\”

在这种情况下,我只想使用正则表达式匹配前两个字母和数字。

我希望像这样在数组上匹配项目:

=> [‘A’, ‘B’, ’10’]

也就是说,字母AB和数字10都是变量,这意味着它可能是B C {{1例如。

我想象的解决方案是这样的:

22

所以我可以拆分它以获得理想的结果。

x = \" A B 10\\n\”.match(regex)评估为x[0]

A评估为x[1]

B评估为x[2]

3 个答案:

答案 0 :(得分:2)

使用轮换解决语料库

这使用替换来捕获您想要的特定项目。

str = %q{\" A B 10\\n\"}
str.scan /A|B|10/
#=> ["A", "B", "10"]

更多通用解决方案

此解决方案在字边界或数字字符串中查找单个大写字母。它是一种更通用的解决方案,不需要您预先指定要匹配的字母或数字。它适用于您的语料库,但如果真正的语料库更复杂,您可能需要进行调整。

str = %q{\" A B 10\\n\"}
str.scan /\b\p{Upper}\b|\d+/
#=> ["A", "B", "10"]

答案 1 :(得分:2)

使用否定的lookbehind不匹配刚出现在\符号后面的单词字符。

> "\" A B 10\\n\s\t\"".scan(/(?<!\\)\w+/)
=> ["A", "B", "10"]

答案 2 :(得分:0)

(?<!\\\\)([a-zA-Z\d]+)

使用此功能。

See demo.