RE 오류: 잘못된 반복 연산자 피연산자

RE 오류: 잘못된 반복 연산자 피연산자

이 오류가 발생합니다.

RE 오류: 잘못된 반복 연산자 피연산자

FreeBSD sed에서는 csh를 사용하십시오.

명령은 다음과 같습니다:

sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'

나는 보았다이 문제하지만 나는 s가 없지만 s가 *+몇 개 있지만 *?그것은 욕심이 없다는 것을 의미해야 합니다. 내가 뭘 잘못했나요?

답변1

이는 질문에 대한 의견에서 이미 언급되었지만 답변을 더 명확하게 하기 위해 다음과 같이 하십시오.

표준 정규식을 사용하든 확장 정규식 패턴을 사용하든 sed에서는 비탐욕적 일치를 사용할 수 없습니다.

일치를 종료해야 하는 문자를 알고 있는 경우 다음과 같은 기술을 사용할 수 있습니다.https://0x2a.at/blog/2008/07/sed--non-greedy-matching/

그리디 매칭:

$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar

탐욕스럽지 않은 매칭:

$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar

관련 정보