我有以下字符串,如何在模式匹配
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