使用perl中的正则表达式拆分字符串

时间:2011-11-27 14:11:43

标签: regex perl split

我有一个这种形式的字符串:

  

$ str =“30M1I20M150N20M190N50M”

编辑:我想拆分这个字符串,以便我的输出看起来像这样:

  

30M1I20M
  150N
  20M
  190N
  50M

然而,当我尝试时,

  

@split_str = split(/(\ d +)N /,$ str);

我明白了:

  

30M1I20M
  150个
  20M
  190个
  50M

如您所见,结果中省略了N(150,190而不是150N和190N)。谁能告诉我应该怎么做?谢谢!

3 个答案:

答案 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
# )