2014-07-27 3 views
0

사용자는 임의의 문자열 문자를 입력하고 허용되는 특수 문자는 *로 문자열 시작 또는 끝에 배치 할 수 있습니다. 예를 들어시작 또는 끝에서만 *를 유지할 Java 정규식

는 :

*hello*  -> *hello 
*h*ello  -> *hello 
h*llo*  -> hello* 
hello**  -> hello* 
**hell**o** -> *hello 

나는 그렇게 할 수있는 정규식을 좋아합니다.

+0

당신은 *'대체 할 않았다'null 값을 가진 문자열 내부에? –

+0

@ Mike'Pomax'Kamermans 아무것도 아니야, 나는 막 붙어있다. –

+0

시작하기 전에 멈출 수 없습니다. 자바 스크립트 및 정규 표현식에 대해 배울 수있는 전체적인 Google 세상이 있습니다. 그것을 탐색 한 다음 다시 한번 해보고, 몇 가지 시도를하고, 조금 배웠습니다. –

답변

1

이 하나가 일치합니다 정규식 아래 어떻게 든

String s="*he**llo*";//anything 
boolean st=(s.startsWith("*")); 
boolean et=(s.endsWith("*")); 
String ns=s.replaceAll("\\*+",""); 
ns=(st)?("*"+ns):(et)?(ns+"*"):ns; 
1

작동 모든 시작 또는 끝이 아니었다 *. 일치하는 *을 Null 값으로 바꿉니다.

정규식 :

(?<!^)\*(?!$) 

자바 정규식 것,

"(?<!^)\\*(?!$)" 

교체 문자열 :

Empty string 

DEMO

자바 코드는 것,

String s="*he*****llo*"; 
String out=s.replaceAll("(?<!^)\\*(?!$)",""); 
System.out.println(out); 

IDEONE

+0

어이, *의 공백을 대체합니다. –

+0

아니요, 아니요. ideone 링크 동생을 참조하십시오. –

+0

새 문자열은 문자열의 시작과 끝 모두에 *를 유지합니다. –