我成功地使用了一个正则表达式,但可能有点太成功了,我想给它添加一些例外,我不希望它影响某些词。(有关一些背景信息,请参阅我之前的问题......这解决了给定的问题,现在我需要添加例外)。
所以,总而言之,我需要做的是:
- 找到一个模式like
[a-z]_[a-z]
,这样的话likesome_var
but not_var
。 - 忽略在双引号内找到的那些匹配项,所以不是
"this_file.jpg"
. - 忽略给定关键字列表中的那些匹配项,所以不要像
size_t
, 等(我有一个例外列表)。
当我找到合适的匹配时,我将其转换为 camelCase,本质上是 ( some_var
-> someVar
),这在前面的问题中得到了成功的回答。
这是在 Ruby 中,这就是我到目前为止的代码:
exclusions = ["size_t", "other_t"]
replacement = text.gsub(/"[^"]+"|_[a-z]/) {|match| (match.length > 2)? match : match[1].upcase } # doesn't do any exclusions from my list, only handles the quoted case.
我有点不知所措。我认为我需要某种负面的前瞻性,但我不确定如何去做(对正则表达式没有超级经验)。
样品
输入:
this_var "that_var" size_t
输出:
thisVar "that_var" size_t
也就是说,引号中的东西应该保持不变,我的排除列表中的东西也应该保持不变。[a-z]_[a-z]
应更改任何其他匹配的字符串。