正则表达式从列中捕获具有多个值的变量

Regex to capture variables with multiple values from columns

我需要使用单独的工作流元素来捕获这两个值。 ("Soldto:"正下方的第3行值与"Shipto:"相同。文本在页面上按列排列,因此将其视为简单模式不起作用。请指教。

图像是真实的,因为文本是通过扫描和 OCR'ing TIF 图像生成的,但这里是我为了测试而复制的一些文本(比页面上的更简洁)

Soldto:                                 Shipto:                                 Billto:                                 
00011222                                00017872                                10221060                                
COSTCO CO INC. - GLOBAL EDI             COSTCO LANGLEY DEPOT                    COSTCO CO/LANGLEY        

为了避免所有 HTML 格式化这些列所需的格式,我将示例文本链接为 .txt file.

感谢您的帮助。

好吧,您实际上并没有提出所讨论的编程语言,所以我将在 PHP 中展示一个可能的解决方案:

<?php
$string = 'Soldto:                              Shipto:                                 Billto:                                 
00011222                                00017872                                10221060                                
COSTCO CO INC. - GLOBAL EDI             COSTCO LANGLEY DEPOT                    COSTCO CO/LANGLEY                       ';
$regex = '~               # delimiter
            ^Soldto:      # look for "Soldto:" at the beginning of the string
            (?:.*\R){2}   # match everything up to the end + newline (2 times)
            (?<poi>.*)    # capture the whole third row into the group "poi"
        ~x';

preg_match_all($regex, $string, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    $columns = preg_split('~\s{2,}~', $match["poi"]);
    # the idea here is to watch out for at least 2 consecutive spaces
    # and use this as delimiter

    print_r($columns);
    /* output
    Array
    (
        [0] => COSTCO CO INC. - GLOBAL EDI
        [1] => COSTCO LANGLEY DEPOT
        [2] => COSTCO CO/LANGLEY
        [3] => 
    )
    */
}
?>

这显然可以根据您的需要进行调整,但现在可以在 $columns 数组中访问您的数据。

要仅从第一列 (COSTCO CO INC. - GLOBAL EDI) 获取字符串,您可以使用以下正则表达式:

^Soldto:(?:.*\R){2}\K((?:(?!\s{2}).)+)

看到一个demo here

好的,所以我发现了一些关于 Laserfiche 的事情。
1.它没有使用\R和\K命令,所以PHP代码不起作用。
2. 它不会将 OCR 结果保存在列中,因此通过列进行解析虽然非常酷,但不是必需的。

部分文字如下:
品牌:生产时间:10:03:09
小数:
00011222
COSTCO CO INC. - 全球 EDI
华盛顿,
Shipto:
00010377
COSTCO/TRACY#179
25862 小号舒尔特
特雷西,加利福尼亚州,95376

以下是完成这项工作的正则表达式:
一种。卖出:So[lit1I|]dto:(?:\s+\d+\s+)(.+)
b. Shipto: Sh[lit1I|]pto:(?:\s+\d+\s+)(.+)

感谢大家的帮助!