【发布时间】:2017-05-13 00:11:01
【问题描述】:
如何匹配两个指定字符之间的所有字符,比如" " ->
来自sdfsf " 12asdf " sdf
我只想得到12asdf。
【问题讨论】:
-
你希望得到什么?它不是返回前导空格吗?请向我们展示您正在使用的正则表达式并将您的示例结果放入代码块中。
标签: regex
如何匹配两个指定字符之间的所有字符,比如" " ->
来自sdfsf " 12asdf " sdf
我只想得到12asdf。
【问题讨论】:
标签: regex
您可以使用以下模式获取" " 之间的所有内容,包括前导和尾随空格:
"(.*?)"
或
"([^"]*)"
如果您想捕获“ ”之间的所有内容,不包括前导和尾随空格,您可以这样做:
"\s*(.*?)\s*"
或
"\s*([^"]*)\s*"
【讨论】:
我建议你使用
(?<=")(?:\\.|[^"\\])*(?=")
这将仅匹配引号之间的内容(而不是引号本身),并且还可以正确处理字符串中的转义引号。
所以在"She said, \"Hi!\"" 中,它将匹配She said, \"Hi!\"。
如果您使用的是 JavaScript 或 Ruby(您没有提及),因此无法使用后向搜索,请使用
"((?:\\.|[^"\\])*)"
并使用捕获组编号。 1.
【讨论】:
您可以使用preg_match(/"([^"]*)"/,$input,$matches);。 $matches[1] 会有你想要的。
【讨论】:
[^"].*[^"]
如果输入:“Elie”,就会给出Elie(注意:不带引号)
【讨论】: