2015-01-26 4 views
0

Я пытаюсь использовать следующий regexp find/replace в Sublime Text, чтобы преобразовать модуль commonjs в оператор import import.Sublime regex находит только одно совпадение в файле

находка:

var (\w+) = require\('(\w+)'\)\; 

заменить

import $1 from '$2'; 

Как-то он находит только один матч на файл, и только на первой линии. Что мне нужно изменить, чтобы он совпал во всем файле? Я попытался добавить/g для глобального, но без везения.

Вот пример текста.

var React = require('react'); 
var Router = require('react-router'); 

Если я использую находку (Cmd-F) он находит только первое вхождение независимо, если я нажимаю найти/найти след/найти все.

+0

Вы нажмете кнопку replaceAll? –

+0

@ AvinashRaj Да, я думаю, что я нажал каждую кнопку, которая была несколько разумной. –

+0

Я думаю, что вы нажали кнопку замены вместо replaceAll. –

ответ

2
var (\w+) = require\('(\w+)'\)\; 

здесь \w означает любое слово символ.
Но ваша вторая линия

var Router = require('react-router'); 

имеет также тир который не является символом слова, я думаю.

Используйте следующее регулярное выражение, чтобы распознать тире.

var (\w+) = require\('([\w\-]+)'\)\; 
+1

Это правильный диагноз, но я бы назначил более универсальное регулярное выражение, которое выполняет нежелательное соответствие для всех символов между круглыми скобками: 'var (\ w +) = require \ ('(. +?) '\) \; 'Кроме того, вы можете искать символы без пробелов:' var (\ w +) = require \ (' (\ S +?) '\) \; 'Или определить набор ограниченных символов, которые НЕ соответствуют : 'var (\ w +) = require \ ('([^ \ /: *?" <> |] +?)' \) \; ' – gfullam

+0

Да, это было! Спасибо. Мне также нужны были. и \ in там так в конце концов я использовал '' 'var (\ w +) = require \ ('([\ w \ -. \ /] +)' \) \;' '' –

+1

@gfullam Спасибо, я только что прочитал вам комментарий только сейчас, но хорошо знать альтернативу :) –

Смежные вопросы