如何在正则表达式中找到2个赋值运算符

时间:2015-12-01 21:13:22

标签: ruby-on-rails ruby

我试图找到2个符号“+ *”,“ - /”等,而且我想确定它是“3”,“4”“* 4”等。我会在里面寻找它和数组或字符串,如[“2”,“+”,“3”,“/”,“2”]

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你会尝试匹配一个符号,后跟一个数字或一个数字后跟一个符号

正则表达式看起来像这样

/^[+-\/\*]\d$|^\d[+-\/\*]$/

击穿

^ - 行首

[+-\/\*] - 任何一个符号。必须转义星号和正斜杠

\d - 匹配任何数字(0到9)

$ - 行尾

| - 或

^\d[+-\/\*]$ - 以数字开头,以符号结尾。

如果您正在寻找,请告诉我。否则我可以解决这个问题。

在Ruby中,让我们假装你有一个数组如下

array = ["2" , "+", "3","/" , "2"]

您可以找到任何两个连续元素是否与上述模式匹配,如下所示

array.each_cons(2).to_a.any? { |combo| combo.join.match(/^[+-\/\*]\d$|^\d[+-\/\*]$/) } 

击穿

  1. 使用each_cons(2)函数查找数组中的每两个连续字符
  2. 使用any?方法查找数组中的任何元素是否满足条件
  3. 遍历每个元素并查找两者中的任何一个是否匹配正则表达式

答案 1 :(得分:0)

我没有得到关于“3-”等的第二部分。但其余的基本想法是:

your_array.each do |element|
  result element.match([/\+\/-]{2}/)
end

请注意,在ruby中使用时,必须使用反斜杠转义以下字符:

. | ( ) [ ] { } + \ ^ $ * ?.