문자열에서 불필요한/여분의 괄호를 제거 할 수있는 정규 표현식이 필요합니다.
예 :여러 괄호를 제거하는 정규식
Bob Barker LIVE! (((Don't Miss out!)))
구인 결과 :
Bob Barker LIVE! (Don't Miss out!)
나는만큼 그들을 이상하지 않는 사용으로, 만약 사용자가 당신을 걱정하고, 그것들을 닫아야하지 않습니다 .
의견을 보내 주셔서 감사합니다.
문자열에서 불필요한/여분의 괄호를 제거 할 수있는 정규 표현식이 필요합니다.
예 :여러 괄호를 제거하는 정규식
Bob Barker LIVE! (((Don't Miss out!)))
구인 결과 :
Bob Barker LIVE! (Don't Miss out!)
나는만큼 그들을 이상하지 않는 사용으로, 만약 사용자가 당신을 걱정하고, 그것들을 닫아야하지 않습니다 .
의견을 보내 주셔서 감사합니다.
충분히 쉽습니다.
preg_replace('~[\(\)]+~', '', $string);
편집 : 전체 질문을 읽지 못했습니다. 당신은 여전히 괄호를 원하지만 중복되지는 않습니다.
preg_replace(array('~\(+~', '~\)+~'), array('(', ')'), $string);
이 작업은 regex + recursion을 사용하면 효과적으로 수행 할 수 있습니다. 그것은 아무것도 멈출 때까지이 작업을 수행 :
이제s/\(\([^()]*)\)\)/\(\1\)/g
일부 의견 :
1) 나는 PHP 스타일의 정규식에 나오지도/펄 스타일을 변환하는 당신에게 그것을 떠날거야.
2)()는 특수 문자이므로 읽기가 어렵습니다. 기본적으로 "((...))
을 (...)
으로 바꾸고 (
또는 )
을 포함하지 않는 한 으로 바꾸십시오. 솔직히 말해서 필자가 적어 놓은 테스트를 테스트하지는 않았지만이 아이디어를 사용하여 복구 할 수 있어야합니다. .
이 항상 여기에 쌍으로 기본적으로 도덕적
그들을 제거이다. 당신은 간단한 정규식으로 할 수없는 질문을 물어 - 쌍으로 제거하는 것은 언어 허용하는 것보다 더 상태를 요구를하지만 이것이다 간단한 정규 표현식을 반복하고 안쪽에서 복식을 먹으면 낮은 매달린 과일
시험해보기 :
preg_replace('/\(+(.*?)\)+/', '($1)', 'Bob Barker LIVE! (((Don\'t Miss out!)))');
이 중첩 된 괄호 제대로 작동하지 않습니다 Demo
,하지만 의 정말 어려운 정규식 (심지어 불가능 엔진에 따라 다름)로 바로 얻을 :
preg_replace(array('/\(+/', '/\)+/'), array('(', ')'), $text);
시도해 볼 수 있습니다 :
preg_replace("([\\(]{1,})", "(", preg_replace("([\\)]{1,})", ")", $your_string));
T 대체 규칙은 무엇입니까? 짝짓기 괄호 또는 연속되는 개폐식 붕괴 - 아직 시도해 봤어? – mario
'((fo (o)) (bar))'와'(((foo)'? – Qtax