我正在使用正則表達式,但也許有點太成功,我想補充一些例外,我不希望它影響某些詞。 (見我的previous question for some background ...這解決了給定的問題,現在我需要添加例外)。正則表達式,但忽略某些詞
因此,總的來說,我需要做的是:
- 找到像
[a-z]_[a-z]
的模式,所以像some_var
但不_var
話。 - 忽略在雙引號內找到的那些匹配,所以不是
"this_file.jpg"
。 - 忽略給定關鍵字列表中的那些匹配項,所以而不是類似
size_t
等(我有一個例外列表)。
當我找到合適的比賽,我把它轉換爲駝峯,基本上(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]
的字符串都應該更改。
將是真正有用的,如果你有樣品輸入(S)和輸出(S)完全吻合。 – Dogbert
您可能希望爲此使用至少2個單獨的正則表達式,尤其是對於包含單詞列表的部分。 –
根據排除列表排除數據的一種非常簡單的方法是'%r {exclusions.join(「|」)}',這將生成正則表達式'/ size_t | other_t /'。 – Kashyap