使用vim正则表达式匹配多行javascript导入

时间:2018-01-21 09:35:17

标签: javascript regex vim neovim

我在js文件中有这些导入

import { Field } from 'redux-form';
import {
  fullName,
} from '../../../common/helpers/users';

我正在尝试仅匹配第二个导入。我尝试使用此搜索

/^import\s{\_.*}\sfrom\s'\.\.\/\.\.\/\.\.\/common\/helpers\/users';$

以及使用\v

的这个

/\v^import\s\{\_.*\}\sfrom\s'\.\.\/\.\.\/\.\.\/common\/helpers\/users';

但是这两种正则表达式都匹配导入(基本上都是一切)。我怎样才能匹配第二个?

import {
  fullName,
} from '../../../common/helpers/users'

谢谢!

2 个答案:

答案 0 :(得分:1)

似乎在第一个表达式中添加换行符将匹配第二个import语句,但不匹配第一个。

^import\s{\n\_.*}\sfrom\s'\.\.\/\.\.\/\.\.\/common\/helpers\/users';$

如果你想在换行符之前允许尾随空格,你也可以添加它。

^import\s{\s*\n\_.*}\sfrom\s'\.\.\/\.\.\/\.\.\/common\/helpers\/users';$

答案 1 :(得分:1)

您只需在\n之后添加{

/^import\s{\n\_.*}\sfrom\s'\.\.\/\.\.\/\.\.\/common\/helpers\/users';$

<强>解释

\_.匹配任何单个字符或行尾,因此import之后带有或不带换行符的{语句都会匹配。

\n之后添加{,vim只会匹配第二种import语句。