0

我根本没有使用正则表达式的经验。我的 vim 脚本需要一个简单的正则表达式来突出显示咖啡脚本函数或变量。

所以在下面的代码中

myvar = 12
square = (x) -> x * x

会强调myvarsquare

基本上在行首和和等号之间的任何内容。

这是我用伪代码表达它的方式

x = line.between("beginning of line", "=")

if x.contains(" ", "+", "-", "etc.")
    return false
else
    return true

我不必在所有情况下都工作,只是我可以使用的东西。

4

4 回答 4

2

^[^=]\+\(=\)\@=

分解:

  1. ^匹配行首
  2. [^=]\+匹配一个或多个非=字符(即直到第一个=
  3. \(=\)\@=寻找等号(以确保行中有一个)但不选择它的正向前瞻
于 2013-10-02T00:51:59.587 回答
0
^([^=]+)\=

我会怎么做...

于 2013-10-02T00:54:38.220 回答
0
^\w\+\s*=

正则表达式可视化

调试演示

  • ^行首
  • \w+至少一个单词字符(字母、数字、下划线)
  • \s*0 个或多个空格
于 2013-10-02T01:59:02.550 回答
0

我会去:

^[^=]\{-1,}\ze\s*=

意思是:

  • ^: 行首
  • [^=]\{-1,}: 除 , 之外的任何字符=,一次或多次,但尽可能少(这意味着,尽量不要使用尾随空格)
  • \ze:比赛结束,接下来是一个积极的前瞻断言(如使用\(what follows\)\@=
  • \s*=: 任意数量的空格和等号
于 2013-10-02T05:34:05.403 回答