괄호 안에 단어가 포함 된 문자열이 있습니다. 문자열에서 전체 단어를 제거해야합니다.문자열에서 단어를 제거하려면 어떻게해야합니까?
예를 들어, 입력의 경우 "car wheels_(four) klaxon"
은 "car klaxon"
이어야합니다.
누군가가이 작업을 수행 할 수있는 예를 제공 할 수 있습니까?
괄호 안에 단어가 포함 된 문자열이 있습니다. 문자열에서 전체 단어를 제거해야합니다.문자열에서 단어를 제거하려면 어떻게해야합니까?
예를 들어, 입력의 경우 "car wheels_(four) klaxon"
은 "car klaxon"
이어야합니다.
누군가가이 작업을 수행 할 수있는 예를 제공 할 수 있습니까?
정규 표현식으로이 작업을 수행 할 수 있습니다. 당신이 필요로하는 정규 표현식은 다음과 같습니다
"\s?\S+[()]\S+\s?"
이는 포함 된 단어 중 하나 (또는) 또는 둘 모두를 제거하고, 단어를 모두 제거하고 주위의 공백을 축소합니다. 일치 항목은 하나의 공백으로 대체해야합니다.
string s = "car wheels_(four) klaxon";
s = Regex.Replace(s, @"\s?\S*[()]\S*\s?", " ");
나는이에 대한 VB 번역 완전히 확실하지 않다, 그러나 희망 당신은 그것을 알아낼 수 :
는 C#에서 정규 표현식은 다음과 같이 사용할 수있다.약간 다른 :
그것은 다음과 같이 작동sed "s/\s\+\S*(.\+)\S*\s\+/ /g" yourfile
:
yourfile :
car wheels_(four) klaxon
ciao (wheel) hey
foo bar (baz) qux
stack overflow_(rulez)_the world
가에 변화 : 속도가 문제가되지 않는 경우
car klaxon
ciao hey
foo bar qux
stack world
우와. Regexs는 다시 한번 세계를 지배합니다. http://xkcd.com/208/ – Tonio
잘 작동하지 않습니다. 'foo bar (baz) qux'에서는 "foo bar qux"대신 "foo qux"를 얻습니다. 여러 단어를 일치시키지 않으려면 비 공백 문자와 일치시켜야합니다. –
다른 테스트 케이스가 있습니다 : 'foo ba (r baz qu) x quux.' 포스터는이 경우 원하는 내용을 지정하지 않았으므로 정확한 결과가 무엇인지 알 수는 없지만이 경우 출력이 다릅니다. –
및 오버 컴프를 피하기를 원한다. liced 정규 표현식을 사용하면 String.Split을 사용하여 "words"배열을 만들고 각 단어를 반복하며 해당 String을 모두 바꿀 수 있습니다. "("는 빈 문자열을 사용하고 String.Join은 ""결과를 얻으십시오.
죄송합니다. codez을 보낼 수 없으므로 VB.NET 컴파일러가 필요하지 않습니다.
당신의 정규식이 내 마음을 날려 버렸습니다 – JohnIdol
잠재적 인 문제 : 괄호가 균형을 잡지 못하는 경우에도 괄호로 모든 단어를 일치시킵니다. 그럴 수도 있고 그렇지 않을 수도 있습니다. – Welbog
고마워 마크, 괜찮 았지만 "(바퀴)"같은 단어가있는 단어를 대체하지 않는 경우 : P –