2013-11-20 93 views
0

我想查找一些標點符號並將它們與空格連接起來。查找和連接字符串

例如: 如果找到任何標點符號,我想在它們的前面和末尾添加空格。

$line =~ s/[?%&!,.%*\[◦\]\\;@<>{}#^=\+()\$]/" $1 "/g ; 

我嘗試使用在PHP中,我們可以使用$1$,但沒有奏效。 我在網上搜索並找不到Perl語法?

此外,我怎樣才能保留...作爲一個單一的令牌?

什麼是我的問題的真正語法。

回答

3

你需要圍繞匹配模式與()把它捕捉到$1

$line =~ s/([?%&!,.%*\[◦\]\\;@<>{}#^=\+\(\)\$])/ $1 /g; 

編輯(按OP的評論)

我怎麼能保持」 .. '單個令牌?

一種方法是恢復該令牌的更改。

$line =~ s/ \. \. \. /.../g; 
+0

它的工作,謝謝... – Yilmazerhakan

+0

@Yilmazerhakan不客氣!很高興它的工作。 – jkshah

+0

感謝解決方案,那麼我如何保存'...'單個令牌? - @jkshah – Yilmazerhakan

4

使用此:

#!/usr/bin/perl -w 
use strict; 

my $string = "For example; If i found any puncs. above list, i want to add spaces to front and end of token."; 

$string =~ s/([[:punct:]])/ $1 /g; 

print "$string\n"; 

輸出:

For example ; If i found any puncs . above list , i want to add spaces to front and end of token . 
  • 很顯然,如果你想從你上面的輸出不同,你可以將其添加在兩者之間/ / - 我剛用「標點符號」替換所有標點符號。
+1

您的替代品將刪除標點符號。 –

+0

誤解了這個問題 - 現在已經修復用''標點符號'替換任何標點符號' – fugu

+0

您的編輯答案是我的解決方案,謝謝。 – Yilmazerhakan