"[a-zA-Z0-9]*"
我希望匹配表单的模式
"testing"
但我的正则表达式不匹配任何这些字符串。我在哪里犯错误?
提前致谢。
我想你可能不得不逃避
"
与
\
如:
\"[a-zA-z0-9]*\"
这将按预期为您提供三场比赛。
如果您的要求是“匹配”而不是“提取”:
^"[a-zA-Z0-9"]*"$ would be the regex you need.
请注意,由于您的第二个示例嵌套了双引号,因此您需要"
在[]
用 grep 测试:
kent$ echo '"testing"
"testing123"hello""
'|grep -E '^"[a-zA-Z0-9"]*"$'
"testing"
"testing123"hello""
如果你想在双引号之间提取东西,你需要解释,你想在你的第二个例子中得到什么。
编辑
如果您只想提取双引号之间的内容:
(?<=")[^"]*
就是你要找的。
仍在使用 grep 进行测试:
kent$ echo '"xxx bbb _ foo bar"'|grep -Po '(?<=")[^"]*'
xxx bbb _ foo bar