考虑以下文字 -
[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)
我能把这两者合二为一吗?
环顾四周可能是一个选择:
(?<=")[^"]*(?=")
Run Code Online (Sandbox Code Playgroud)
(?<=")检查前一个字符是否为".
(?=")检查下一个字符是否为".
试验.
另一种方法是使用分组:
"([^"]*)"
Run Code Online (Sandbox Code Playgroud)
如何提取组取决于使用的语言.
试验.(注意"匹配组"区域)
我没有简单地使用"(.*)"因为字符串abc "def" "ghi"会匹配"def" "ghi",尽管你可能想要匹配"def"并"ghi"单独使用.替代[^"]方法是非贪婪匹配 - "(.*?)"它将尽可能少地匹配字符串.