2017-02-08 6 views
2

У меня есть строка, допустим, это «min (Current_em)», и я хочу заменить ее «Current_em» (т.е. строку внутри круглых скобок).Matlab: регулярное выражение заменить

Глядя на регулярные выражения учебники, я думал, что я хотел что-то вроде

regexprep('min(Current_em)', '.*\($0)', '$0') 

Но это ничего не делать. Могу ли я иметь некоторые указатели на темное искусство регулярных выражений?

ответ

2

Вы можете соответствовать (...) и захватить его содержимое '\(([^)]*)\)' или '\(([^()]*)\)' (если внутри нет ( и ) не может появиться).

Затем вам нужно заменить с обратной ссылкой на отлов группа № 1:

regexprep('min(Current_em)', '.*\(([^()]*)\)', '$1') 

Узор Деталь:

  • .* - все 0+ гольцы, жадность, как можно больше (возможно, вы можете заменить его [^(]* для лучшей производительности)
  • \( - буква ( (должен быть экранирован, так как это оператор группы открытого оператора в регулярном выражении)
  • ([^()]*) - Захват группы # 1, соответствующий нулю или более (*) символы, кроме (как [^...] является инвертированный класс символов) ( и )
  • \) - буквальным ) (должен быть экранирован, так как она является группой оператор закрытия в regex)
+0

, который производит «minCurrent_em», мне нужен только «Current_em». Поэтому мне нужно 'regexprep ('min (Current_em)', '. * \ (([^()] *) \)', '$ 1')' – user1543042

+0

Хорошо, я добавил еще несколько комментариев. –