2012-04-18 2 views
-4

하이 펄와 문자열 부분에 일부 내용을 변경하고 다시 이런 일을 넣을 수 있습니다 :어떻게 수식에서 검색하고 난 수식에서 서브 문자열을 추출하고 나중에 일부 변경하려면

((dfhkuyhu.hkjgd.hjkh + hgdfjg.uyrepo.uyu + hgdfjg.uyrepo.uyu)/(hgdfjg.uyrepo.uyu))*((khuh.jbmxcn.bnb + hgdfjg.uyrepo.uyu)/(jhxzku.kjkj.jh + hgdfjg.uyrepo.uyu)) 

와 나는 같은 각 부분의 뭔가 tobeginning과 끝을 추가 할 :

((Foo!dfhkuyhu.hkjgd.hjkh![hg] + Foo!hgdfjg.uyrepo.uyu![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo]/(Foo!hgdfjg.uyrepo.uyu![hg]).[boo])*((Foo!khuh.jbmxcn.bnb![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo]/(Foo!jhxzku.kjkj.jh![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo]) 

어떤 생각?

+0

답변을 제공 할 수있는 기회를 얻으려면 실제 공식을 게시하십시오. – MarkSchoonover

+0

그 차이점은 무엇입니까? 그것은 수식의 구조 사이에 점이있는 문자 집합이 정확히 내가 쓴 것과 같고 '/'와 '*'및 '+'로 쪼개 질 것입니다. 그런 다음 괄호를 제거한 다음 바꿀 것입니다. 그들과 문자열을 검색하고 다시 교체하지만 난 아직도 그것에 해결하기 위해 몇 가지 아이디어가 필요했습니다. 그리고 정규 표현식 뒤에있는 전체 아이디어는 정확한 수식이 맞지 않는 패턴과 일치한다고 생각하십니까? 수식은 바뀔 수 있지만 패턴은 동일합니다! –

답변

2

규칙은 약간 불분명하지만, 당신이 Foo!/![hg]와 숫자 (플러스 분리 점)의 각 실행을 둘러싸려고하고 ).[boo] 각 닫는 괄호를 대체 할 것으로 보인다. 권리?

그럼 당신이 할 수 있습니다 :

$subject =~ s/[\w.]+/Foo!$&![hg]/g; 
$subject =~ s/\)/).[boo]/g; 

설명 :

s/abc/def/ 의미 "대체 어떤 정규식 대체 문자열 defabc 일치"원래 $subject 변수를 수정.

[\w.]+dfhkuyhu.hkjgd.hjkh과 같은 문자열과 일치합니다. 대체 문자열에서 $&은 일치하는 텍스트를 나타냅니다. /g 플래그는 Perl이 문자열의 모든 일치 항목을 찾아 바꾼다는 것을 알려줍니다.

\)은 리터럴 괄호와 일치합니다.

+0

정확히 그 일을 내가 많은 루프와 두통으로하고 있었다 고마워. –

+1

@AshkanAbdnkhn : 듣기 좋았어 - 내가 올바르게 추측 한 것 같다. 앞으로 StackOverflow 환경을 더욱 향상 시키려면 Jon Skeet의 훌륭한 입문서 [완벽한 질문을하는 법] (http://tinyurl.com/so-hints)을 읽어보십시오. 커뮤니티에 오신 것을 환영합니다! –

+0

내게 전나무의 질문 이었어. 미래에 그렇게 할거야. 끝 부분에 코드가 바뀌 었는지 확인해주기 위해 문자열 끝 부분에 어떻게 같은 접미사를 추가 할 수 있는지 말해 줄 수 있니? this $ input = ~ s/\) \ */\). [boo] \ */g; $ input = ~ s/\) \/\). [boo] \/g; 문자열 끝에 마지막 문자가 누락됩니다. –

관련 문제