REGEX:如何解析相同前缀文本中的可变数量的数据点
REGEX: How to parse a variable number of datapoints each inside the same prefixed text
我有这个源数据
[画廊]标题[画廊项目]http://www.google.com/image.jpg[/galleryitem][画廊项目]http://www.google.com/image.jpg[/galleryitem][画廊项目]http://www.google.com/image.jpg[/galleryitem][画廊项目]http://www.google.com/image.jpg[/galleryitem][画廊项目]http://www.google.com/image.jpg[/galleryitem][画廊项目]http://www.google.com/image.jpg[/galleryitem][/gallery]
现在的工作方式是,这是一个图库框,它以图库框的标题开头,后面是一系列封装图像URL的[galleryitem]标签。
问题是,这些galleryitem图像中会有一个变量#,所以我无法找到通过regex处理这一问题的方法。
理想情况下,我会把所有的图像都匹配成某种数组,我可以在单个数组中循环处理。这一切都是在Javascript BTW中完成的。
您需要一次提取一个匹配项。这是我通常使用的模式:
var bbcode = "...";
var pattern = /'[galleryitem']([^'[]*)'['/galleryitem']/g;
var match, url;
while (match = pattern.exec(bbcode)) {
url = match[1];
// do something with url
}
这是怎么回事?RegExp对象(pattern
)在字符串中跟踪其当前索引,每次调用exec
时,它都会从存储的索引开始搜索下一个匹配项。当没有匹配项时,exec
返回null,循环终止。
RegExp.exec()
。
function getGalleryItems(str) {
var matches = [],
galleryitems = [],
re = /'[galleryitem']([^'[]*)'['/galleryitem]/g;
while (matches !== null) {
matches = re.exec(str);
if (matches !=== null) {
galleryitems.push(matches[1]);
}
}
return galleryitems;
}
我仍然(显然…)是regex的新手,但我想到了以下内容:
var text = "[gallery]Title[galleryitem]http://www.google.com/image.jpg[/galleryitem][galleryitem]http://www.google.com/image.jpg[/galleryitem][galleryitem]http://www.google.com/image.jpg[/galleryitem][galleryitem]http://www.google.com/image.jpg[/galleryitem][galleryitem]http://www.google.com/image.jpg[/galleryitem][galleryitem]http://www.google.com/image.jpg[/galleryitem][/gallery]";
var parsedText = text.replace(/('['/*galleryitem'])|('['/*gallery'])|title/gi,' ').split(/'s+/);
var imgs = [];
for (var i=0,len=parsedText.length;i<len;i++){
if (parsedText[i] != ''){
imgs.push(parsedText[i]);
}
}
console.log(imgs);
JS Fiddle演示。
虽然我确实希望它在某种程度上有用,但我也希望有人能过来,在笑了一会儿之后,告诉我如何简化这个怪物。。。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 如何在可分组的剑道网格中设置空数据文本
- 清除数据并将旧值附加到文本框中
- 如何从文本区域获取数据并使用javascript进行解密
- 如何使用JavaScript解析输入文本中给定的数据
- 单击文本时删除文本框的默认数据
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 用Promises返回的数据替换出现的文本
- 如何使用JavaScript从文本框中检索数据
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 如何使用PHP获取h1的内容以用于Twitter数据文本参数
- Sharrre-Facebook数据文本和数据url没有显示在多个按钮上
- 如何在Object〔Object HTMLCollection〕上插入Mysql数据文本
- 从Web应用程序网页的HTML元素(h2/span)中获取数据(文本)
- 在Javascript中动态更新twitter按钮的数据文本
- 文件上传和数据(文本)表单转化为HTML表格
- 显示来自数据文本属性的数据
- 更改数据-文本后单击tweet按钮
- 向数据库添加数据文本文件