gpt4 book ai didi

python - 多次解析同一个匹配的字符串

转载 作者:行者123 更新时间:2023-11-30 22:43:23 25 4
gpt4 key购买 nike

我有一个像这样的字符串。

1000 name1 x:<something1> y:<something2> z:<somthing3> 24 name2 x:<something4> y:<something5> z:<something6>

我想获取起始处的数字、名称以及 x、y、z 之后的值。

我可能想到的是 [0-9]+ *[^0-9]+ x:(.*) y:(.*) z:(.*) 但它是没有给出正确的结果。

如何获取数字、名称和值,并在 n 行中一次又一次地迭代它们。有时“x:”本身可能不存在,在这种情况下该怎么办。该号码可能不存在。

我正在查看的输出是

1000 name1 <something1> <something2> <something3>
24 name2 <something4> <something5> <something6>

最佳答案

您可以使用以下正则表达式:

(\d+)\s([^\s]+)\s(?:x:([^\s]+))?\s(?:y:([^\s]+))?\s(?:z:([^\s]+))?
  • x: 的匹配组, y:z:是可选的(带有 ? )。这意味着,如果无法匹配,则组的值只是未定义,但整个表达式仍然匹配。
  • 不匹配的组 (?:)用于保持组的编号( $1$2 等)干净。
  • 空格(即每种形式中的空白)用于将组分开。如果 <something>包含空格字符,它将不再正常工作。

这是 JavaScript 中的可执行示例:

var text = '1000 name1 x:<something1> y:<something2> z:<somthing3> 24 name2  y:<something5> z:<something6>';
var regex = /(\d+)\s([^\s]+)\s(?:x:([^\s]+))?\s(?:y:([^\s]+))?\s(?:z:([^\s]+))?/g;
var match = regex.exec(text);

while(match !== null) {
console.log(match[1], match[2], match[3], match[4], match[5]);
match = regex.exec(text);
}

关于python - 多次解析同一个匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41791359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com