正则表达式匹配给定字符后的文本,不包括字符本身

Ksh*_*rma 7 regex

考虑以下文字 -

[Event "F/S Return Match"]
Run Code Online (Sandbox Code Playgroud)

我想提取 -

F/S Return Match
Run Code Online (Sandbox Code Playgroud)

现在我正在使用 -

\"(.*)"
Run Code Online (Sandbox Code Playgroud)

哪个yeilds -

"F/S Return Match"
Run Code Online (Sandbox Code Playgroud)

然后我用 -

[^"]*
Run Code Online (Sandbox Code Playgroud)

要得到 -

F/S Return Match
Run Code Online (Sandbox Code Playgroud)

我能把这两者合二为一吗?

Duk*_*ing 8

环顾四周可能是一个选择:

(?<=")[^"]*(?=")
Run Code Online (Sandbox Code Playgroud)

(?<=")检查前一个字符是否为".
(?=")检查下一个字符是否为".

试验.

另一种方法是使用分组:

"([^"]*)"
Run Code Online (Sandbox Code Playgroud)

如何提取组取决于使用的语言.

试验.(注意"匹配组"区域)

我没有简单地使用"(.*)"因为字符串abc "def" "ghi"会匹配"def" "ghi",尽管你可能想要匹配"def""ghi"单独使用.替代[^"]方法是非贪婪匹配 - "(.*?)"它将尽可能少地匹配字符串.

  • 据我所知,JavaScript不支持look-behind. (2认同)