我有一个这种形式的字符串:
$ str =“30M1I20M150N20M190N50M”
编辑:我想拆分这个字符串,以便我的输出看起来像这样:
30M1I20M
150N
20M
190N
50M
然而,当我尝试时,
@split_str = split(/(\ d +)N /,$ str);
我明白了:
30M1I20M
150个
20M
190个
50M
如您所见,结果中省略了N(150,190而不是150N和190N)。谁能告诉我应该怎么做?谢谢!
答案 0 :(得分:7)
将N 放入捕获组。
/(\d+N)/
答案 1 :(得分:1)
尝试以下(未经测试):
split(/(\d+?[MN])/, $str);
答案 2 :(得分:1)
请参阅Look-around assertions in perlre
。
split /(?<=[NM])/, '30M1I20M150N20M190N50M'
# returns
# qw(
# 30M
# 1I20M
# 150N
# 20M
# 190N
# 50M
# )