regEx解析字符串,该字符串可选地重复相同的模式

regEx parsing string which optionally repeats the same pattern

本文关键字:字符串 模式 regEx      更新时间:2023-09-26

我正在尝试解析一个表示人的数组的长字符串。字符串包含一个或多个重复模式,每个用户一个。它的形式是:

单人:

6;#Pierre,#stuff about Pierre

对于多个人,分隔符为";#",模式重复:

"6;#Pierre,#stuff about Pierre;#8;#Luigi,#more stuff about Luigi"

我使用的regEx适用于单个用户,并提取名称和"more stuff"

/('d+)(?:;#)(.*)(?:,#)(.*)/

我一直在尝试建立一个Regex,让我知道是否还有其他人需要处理,但我找不到方法!

我不鼓励您使用(.*),因为它完全匹配任何字符(例如,包括;#8)。更多关于定期出口贪婪的信息。info.

我会这样做:

('d+);#(.*?),#(.*?)(?=;#|$)

?使.*懒惰,而(?=;#|$)前瞻仍然强制在最后一个捕获组(具有更多信息)之后存在另一个人或字符串的末尾。

你可以在这个Regex101演示中看到它的工作原理。

您可以使用正向前瞻,查看;#后面是否跟有'd+,然后我们将使用Array.map,;# 上进行拆分

var arr = str.split(/;#(?='d+)/).map(function(str){ 
    return str.split(/;#|,/);
});