我有以下字符串:
\" A B 10\\n\”
在这种情况下,我只想使用正则表达式匹配前两个字母和数字。
我希望像这样在数组上匹配项目:
=> [‘A’, ‘B’, ’10’]
也就是说,字母A
,B
和数字10
都是变量,这意味着它可能是B
C
{{1例如。
我想象的解决方案是这样的:
22
所以我可以拆分它以获得理想的结果。
x = \" A B 10\\n\”.match(regex)
评估为x[0]
A
评估为x[1]
B
评估为x[2]
答案 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)