首页 > 解决方案 > 正则表达式:在引号内查找第一次出现

问题描述

我有这样的多行文字:

sometext "F1" "some other text;" "some other text;"
sometext "1" "some other text;"
sometext "`" "some other text;"
sometext "Tab" "some other text;"
sometext "CapsLock" "some other text;" "some other text;"
sometext "Shift" "some other text;"
sometext "\" "some other text;"
sometext "K" "some other text;"
sometext "ins" "some other text;"
sometext "downarrow" "some other text;" "some other text;"
sometext "Num Lock" "some other text;"
sometext "num5" "some other text;"
sometext "numenter" "some other text;"

我需要在每行的第一个引号内获取值。我已经尝试过"(.*?)",但它在“”中找到了每个值。

标签: regex

解决方案


要在双引号的第一次出现中获取值,您可以添加一个锚来断言行的开头,^然后使用否定字符类 [^"]*匹配不是 " 。您的匹配将在第一个捕获组中:

^[^"]*"(.*?)"

或者您也可以使用否定字符类来捕获双引号之间的内容:

^[^"]*"([^"]+)"


推荐阅读