给定一行没有任何换行符的字符串,我想得到一组字符串,这些字符串可能由引号组成并用空格分隔。只有当它在引号内时才允许使用空格。 E.g。
A =" 1234" gg b = 5678 c =" 1 2 3"
结果应该有4组:
到目前为止,我有这个
line.replace('\|',' ')
但这无法捕获第二组" gg"。我无法检查文本前后是否有空格,因为这将包含引号内有空格的字符串。
任何帮助将不胜感激!感谢。
被修改 这是针对javascript的
答案 0 :(得分:0)
如果我没有误解你所说的这就是你要找的东西。
\w+=(?|"([^"]*)"|(\d+))|(?|[a-z]+)
将其视为一种后备选项,可以在更通用的选项前面使用更复杂的选项。
或者,您可以删除第二个?|
并将其作为一个不同的组捕获,以便您可以检查该组(第2组)
答案 1 :(得分:0)
在JavaScript中,您可以使用以下正则表达式:
/\w+(?:=(?:"[^"]*"|\S+)?)?/g
请参阅regex demo。
<强>详情
\w+
- 1+个字母,数字或/和_
(?:=(?:"[^"]*"|\S+)?)?
- 可选序列:
=
- 等号(?:"[^"]*"|\S+)?
- 可选序列:
"[^"]*"
- "
,然后是"
以外的0 +字符,然后是"
|
- 或\S+
- 1 +非空白字符JS演示:
var rx = /\w+(?:=(?:"[^"]*"|\S+)?)?/g;
var s = 'a="1234" gg b=5678 c="1 2 3" d=abcd e=';
console.log(s.match(rx));