2013-06-10 3 views
1

아래와 같이 문자열에서 (제목)을 모두 제거하고 싶습니다. 어떻게 정규식을 작성합니까? 아래 정규식을 시도했지만 작동하지 않습니다.정규 표현식을 사용하여 모든 어커런스를 제거하십시오.

String ruler1="115.28(54)(title) is renumbered 115.363(title) and amended to read:"; 
Pattern rulerPattern1 = Pattern.compile("(.*)\\(title\\)(.*)", Pattern.MULTILINE); 

System.out.println(rulerPattern1.matcher(ruler1).replaceAll("")); 
+0

[문자열의'.replace()'메소드] ​​(http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace (java.lang.CharSequence) , % 20java.lang.CharSequence)) – fge

+0

"(제목)"을 제거 하시겠습니까? 아니면 주위의 텍스트도 제거 하시겠습니까? 그렇다면 다른 텍스트를 결정하는 것은 무엇입니까? – Bohemian

답변

3

정규식은 그보다 훨씬 간단하다 - 당신이 필요로하는 모든는 다음과 같이 괄호를 탈출하는 것입니다 :

\\(title\\) 

당신은 replaceAll takes a regular expression 때문에, 명시 적으로 Pattern 클래스를 사용할 필요가 없습니다.

String ruler1="115.28(54)(title) is renumbered 115.363(title) and amended to read:"; 
String result = ruler1.replaceAll("\\(title\\)", ""); 

귀하의 패턴은 여기 "(title)"

를 포함하는 demo on ideone 인 문자열에 모든 것을 대체합니다.

0

나는 정규식이 그렇게 간단한 것을위한 훌륭한 해결책이라고 생각하지 않는다. Apache commons-lang 패키지에서 StringUtils.replace()을 시도하십시오.

String result = StringUtils.replace(ruler1,"(title)",""); 
+1

왜? 'StringUtils'는 JDK에 없으며'String' 자체에 동일한 작업을 수행하는'.replace() '가 있습니다 ... – fge

+0

String.replace()가 동일하지 않습니다. null 문자열에 대해 보호하지 않습니다. 마지막 출현 만 대체합니다 (모든 출석이 아님) – PaulProgrammer

+0

질문 (!)에 대한 답변이 아니지만 공정한 부분입니다. 이 경우 정규 표현식을 사용하는 것은 대포에서 나온 참새로 촬영하는 것과 같습니다. – Dariusz

1

그냥 String가 제공하는 무엇을 사용

System.out.println(ruler1.replace("(title)", "")); 

.replaceAll() 대 그 이름에 속지 마십시오, 그것은 매우 잘못된 것입니다 :

  • .replace()이 정규 표현식에 사용하지 않는다;
  • .replace() 모든 항목을 바꿉니다.

당신이해야 할 일이 주어지면, 그것은 적합합니다. Javadoc for .replace()

+1

사실,'replace (CharSequence target, CharSequence replacement)'는 regex를 사용하지만 정규 표현식의 경우'Pattern.compile (target.toString(), Pattern.LITERAL)'을 사용하고'Matcher.quoteReplacement (replacement.toString())'로 대체합니다. 문자열 대체 메서드에서'replace (char oldChar, char newChar)'는 regex를 사용하지 않습니다. – Pshemo

+0

+1이 가장 좋은 답변입니다. 허용 된 대답은 나쁜 코드입니다 – Bohemian

+0

@Pshemo OMG 몰랐어요! 그것은 솔직하고 실망 스러울 수 없을 것 같습니다. – Bohemian

관련 문제