我有以下字符串,如何在模式匹配
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
请有人可以帮助我?
我有以下字符串,如何在模式匹配
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
请有人可以帮助我?
您可以使用此正则表达式分裂:
(?<=pat)\s+
(?<=pat)
是回顾后发正则表达式是确保1个或多个空格是由文本字符串开头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
非常感谢,请您详细说明正则表达式吗?我猜这个?<= pat匹配模式pat,然后是\ s(这是为了分割字符串吗?) – user2986175
@ user2986175:是的,我在Example之前添加了解释。 '(?<= pat)是lookbehind模式,可以确保1个或多个空格前面有用于分割的文字字符串“pat”。 – anubhava
你可以使用这个固定的“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
环视断言。
+1。我宁愿尽可能避免复杂的正则表达式,这正是您的答案。 – slayedbylucifer
您有任何尝试吗? – Jerry