【问题标题】:removing data from regular expression [duplicate]从正则表达式中删除数据[重复]
【发布时间】:2012-10-05 19:47:52
【问题描述】:

可能重复:
Parse a text file containing image data

这是我从文本文件中获取图像数据的代码:

while (!feof($fh)) {
    $line = fgets($fh);
    $lines[] = $line;
    $match1 ="/^[0-9]{1,3},[0-9]{1,3}/";
    $match2 = "/[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},(?:,?[0-9]{1,3})*(?:\.[0-9]{1,10})?\b/";

    $parts  = preg_match($match1, $line, $regs);
    $parts2 = preg_match($match2, $line, $regs2);
    foreach($regs as $key => $lame) {
        $lamer[] = $lame;
    }
    foreach($regs2 as $key => $lame2) {
        $lamer2[] = $lame2;
    }
}

第一个 preg_match 获取坐标,第二个获取 rgba() 数据。 我正在尝试将其放入 javascript 数组中,但出现此错误:

SyntaxError: too many constructor arguments

我认为 javascript 数组的数据太多了。

现在我想知道如何或是否可以跳过数组中的数据,即坐标 具有 0 alpha 的 rgba,这意味着我将不得不跳过两者。

我也想知道是否应该尝试将两个匹配项合并为一个,看看是否会更容易,但我不知道该怎么做。

这是我正在处理的数据,它是 300x180 图像:

41,6: (255,255,255, 0) #FFFFFF00 srgba(255,255,255,0) 42,6: (255,255,255, 0) #FFFFFF00 srgba(255,255,255,0) 90,35: (77, 80, 12, 98) #4D500C62 srgba(77,80,12,0.384314) 91,35: (95, 99, 13, 78) #5F630D4E srgba(95,99,13,0.305882) 92,35: (96, 99, 31, 90) #60631F5A srgba(96,99,31,0.352941) 93,35: (106,110, 14, 68) #6A6E0E44 srgba(106,110,14,0.266667) 94,35: (95, 99, 13, 78) #5F630D4E srgba(95,99,13,0.305882)

【问题讨论】:

  • 你确定这是javascript吗?
  • 是的,我会将数据回显到 javascript array() 中。我展示的是 php
  • 让php遍历文件,删除这些行然后创建一个新文件会更容易吗。
  • 如何你将它放入一个 javascript 数组中?那是您的问题发生的地方,但您尚未发布该代码。

标签: php javascript html regex


【解决方案1】:

使用 JavaScript RegExp 模式

^(\\d+),(\\d+)[^#]+#.{6}(?!00)[^(]+\\((\\d+),(\\d+),(\\d+),(\\d*(?:\\.\\d*)?)

检查this demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2020-04-24
    • 1970-01-01
    • 2018-04-27
    • 2010-10-23
    • 2013-01-07
    • 2013-01-08
    相关资源
    最近更新 更多