regEx解析字符串,该字符串可选地重复相同的模式
regEx parsing string which optionally repeats the same pattern
我正在尝试解析一个表示人的数组的长字符串。字符串包含一个或多个重复模式,每个用户一个。它的形式是:
单人:
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(/;#|,/);
});
相关文章:
- 如何在Javascript中将字符串与模式数组相匹配
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- 从Regex模式获取子字符串
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 在字符串中搜索模式并存储其值
- 获取非标准模式中的子字符串
- 模式显示文本区域内容不是字符串
- 带有模式的正则表达式字符串
- 在数组 jQuery 中查找特定的字符串模式
- Angular JS - 具有自定义验证规则的字符串模式
- 如何验证输入字段以确保Javascript中的特定字符串模式
- 使用Regex在字符串模式出现前后插入文本
- 在Javascript中测试字符串模式匹配
- 用于从字符串模式中提取城市名称的正则表达式
- Emacs -用另一个字符串模式替换一些字符串模式
- 从字符串中提取特定的字符串模式
- Javascript字符串模式匹配给出空结果
- 使用RegExp替换字符串模式的Javascript
- 匹配字符串模式的最简单方法
- 在正则表达式中验证字符串模式