이 텍스트가 있습니다.
{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large
나는 이런 것을 얻으려고 노력하고 있습니다.
having or marked by great volume or bulk
정규식 모듈을 사용하여 이 작업을 수행하려고 합니다.
import re
text = "{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large"
new_text1 = re.sub("{","",text)
new_text2 = re.sub("}","",new_text1)
new_text3 = re.sub("a_link","",new_text2)
new_text4 = re.sub("|","",new_text3)
final_text = re.sub("bcsx.*","",new_text4)
그래야만 원하는 결과를 얻을 수 있었지만 5단계가 걸렸습니다! 이 작업을 더 쉽게 수행할 수 있습니까?
답변1
사용행복하다(이전 Perl_6)
명령줄에서:
~$ raku -pe 's:g/ \{ .*? [ \} | $ ]//;' file
또는
~$ raku -pe 's:g{ \{ .*? [ \} | $ ] } = "";' file
꼭 파이썬이어야 하나요? Raku는 특히 정규식을 통해 까다로운 유니코드 텍스트를 처리하려는 경우 좋은 선택입니다. 위(예 1)에서는 익숙한 s///
대체 연산자가 사용되었습니다. 예제 2에서는 Raku의 최신 "할당" 대체 형식을 사용합니다(예 s{…} = "…"
: .
위의 예 중 하나: Raku는 \{
왼쪽 공상, .*?
0개 이상의 문자 인스턴스(탐욕적이지 않은 검색)를 검색한 다음 오른쪽 공상 또는( 파이프라인 연산자) 로 구성된 [
... ]
괄호로 구분된 그룹이 뒤따릅니다. 너비가 0인 어설션으로 끝나는 문자열입니다.\}
|
$
이 정규식 솔루션은 중첩된 중괄호 문제를 해결하지 못한다는 점에 유의해야 합니다. 내포된 지지대를 사용하려면 다음을 참고하세요.중첩된 구조 물결표.
입력 예:
{bc}having or marked by great {a_link|volume} or bulk {bc}{sx|large
예제 출력:
having or marked by great or bulk
https://docs.raku.org/언어/operators#s///_in-place_substitution
https://raku.org/