【发布时间】:2016-04-27 22:26:43
【问题描述】:
我想从以下示例txt中提取数据
START
A: 567 B:345
C: 345 D:485
START
A: 345 B:267
C: 980 D:054
我正在使用这个正则表达式,但没有积极的结果:
$regex = '~'
. '^(?P<header>.*START:.*)$'
//. '^(.*A: \d{3} B: \d{3}.*)$'
//. '(.*C: \d{3} D: \d{3}.*)$'
. '~m'
;
这给了我以下结果:
Array
(
[0] => Array
(
[0] => START:
[header] => START:
[1] => START:
)
[1] => Array
(
[0] => START:
[header] => START:
[1] => START:
)
)
但是一旦我取消注释这些行
. '^(.*A: \d{3} B: \d{3}.*)$'
和
. '(.*C: \d{3} D: \d{3}.*)$'
我没有匹配!
如何提取这些数据?
我已尝试删除行锚^ 的开头并将行尾锚$ 更改为\n,但没有成功
一般
当我有一个数据开始行,然后是n个数据行,然后是一个数据行结束,然后是一个时,如何提取数据还是更多空行?
【问题讨论】:
-
当你使用多行标志
m时,它意味着^表示输入的开始,$表示输入的结束,而不是一行的结束。 -
@Sammitch m 修饰符:多行。导致 ^ 和 $ 匹配每行的开始/结束(不仅是字符串的开始/结束),根据:regex101.com