如何在模式匹配上拆分字符串

时间:2013-12-19 07:08:56

标签: regex string perl

我有以下字符串,

9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat

我需要拆分此字符串并将结果字符串保存在数组中。

结果字符串如下所示:

9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat

请有人帮我这个吗?

2 个答案:

答案 0 :(得分:6)

您可以将此正则表达式用于拆分:

(?<=pat)\s+
  • (?<=pat)是lookbehind正则表达式,可确保一个或多个空格前面有文字字符串pat

示例:

perl -wpe 's/(?<=pat)\s+/\n/g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"
9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat

答案 1 :(得分:3)

您可以将此固定的“pat”用作拆分分隔符。

perl -wpe 's/pat\s/pat\n/g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"
9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat

perl -wpe 's|pat\K\s|\n|g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"

perldoc perlre用于\K外观断言。