我有以下字符串:
foo.a = [10
20
30
40];
foo.b = 'foobar';
我正在使用 foo\.[ab]\s*=
正则表达式。
我试图匹配紧随其后的所有行,直到出现某个特定字符的行为止。
第一个匹配应该覆盖除最后一行以外的所有内容,因为那一行包含了一个等号。我尝试了很多带有(否定)预查的方法,但是我无法解决它。
我有以下字符串:
foo.a = [10
20
30
40];
foo.b = 'foobar';
我正在使用 foo\.[ab]\s*=
正则表达式。
我试图匹配紧随其后的所有行,直到出现某个特定字符的行为止。
第一个匹配应该覆盖除最后一行以外的所有内容,因为那一行包含了一个等号。我尝试了很多带有(否定)预查的方法,但是我无法解决它。
foo [\ s \ S] *?(?= \ n .*?30)
,那么很容易进行修改。 - cregoxfoo\.[ab]\s*=[\s\S]*?(?=foo\.[ab]\s*=)
使用正向前瞻匹配到另一个foo.a =
或foo.b =
之前,它与您想要的内容相匹配。
演示:https://regex101.com/r/xV9wL4/2
(foo\.[ab]\s*=)[\s\S]*?(?=(?1))
(?1)
)来简化它。
foo\.[ab]\s*=[\s\S]*?;
??? - Tusharfoo\.[ab]\s*=[\S\s]*[=]+
像这样?匹配应该在哪里停止? - Tacocat(foo\.[a-zA-Z])\s*=\s*([^=]+?)(?=$|\n.*=)
。 - Wiktor Stribiżew