/[a-zA-Z]*/
以上匹配a-z中的所有字符,但我希望在字符串中有'if'时排除。
尝试[^if]
但无法实现我的目标。
[编辑] 我有一个公式评估器,它返回一些值:
value = "if(a < b,a,b+1)"
formula = value.gsub(/[a-zA-Z]*/,'1')
verify = Calc.evaluate(formula)
我正在尝试将1
分配给字符串中的a
和b
,并检查公式是否有效并进行评估。
Expected Output: "if(1 < 1,1,1+1)"
答案 0 :(得分:1)
你可以试试这个:
/((?!if )[a-zA-Z])*/
string = "abc"
string.match(/((?!if )[a-zA-Z])*/)
# MatchData "abc"
string = "if abc"
# MatchData ""
答案 1 :(得分:0)
为了满足您的需求,您可以像这样使用gsub
:
"if(a < b,a,b+1)".gsub(/[a-zA-Z]+/){|m| m == 'if' ? m : '1' }
答案 2 :(得分:0)
我正在尝试将1分配给字符串中的a和b ...
好吧,如果你想这样做,那你为什么要搞乱除a
或b
以外的任何事情?
str = 'if(a < b,a,b+1)'
str.gsub(/\b[ab]\b/, '1') # => "if(1 < 1,1,1+1)"
\b
是一个字边界标记,因此\b[ab]\b
表示a
或b
必须是单个字符。