2013-11-20 2 views
0

일부 구두점 문자를 찾아 공백으로 연결하고 싶습니다.문자열 찾기 및 연결

예 : 구두점이 있으면 그 앞뒤에 공백을 추가하고 싶습니다.

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

나는 우리가 $1를 사용할 수있는 PHP에서 사용되는 $를 사용하려했지만 작동하지 않았다. 웹에서 검색했는데 Perl 구문을 찾을 수 없습니까?

또한 ...을 단일 토큰으로 어떻게 보존 할 수 있습니까?

내 문제의 진정한 구문은 무엇입니까?

답변

3

당신은 $1

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

EDIT 내가 '보존 할 수있는 방법

(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

질문을 잘못 이해했습니다. 구두점을' "punctuation"로 바꾸도록 수정했습니다. – fugu

+0

수정 된 답변이 내 해결책입니다. 감사합니다. – Yilmazerhakan