2010-07-09 3 views
1

정규식 질문이 맞는지 확실하지 않지만 단일 qoutes 안에있는 내용을 가져 와서 무엇인가를 둘러 볼 수 있어야합니다. 예를 들어 :Java 견적 일치

this is a 'test' of 'something' and 'I' 'really' want 'to' 'solve this' 

this is a ('test') of ('something') and ('I') ('really') want ('to') ('solve this') 

당신이 좋은 것입니다 제공 할 수있는 어떤 도움 변신 것입니다!

감사합니다.

+0

문자열 안에 작은 따옴표가 이스케이프 된 경우 어떻게해야합니까? –

+0

@ 마크 -이 경우에는 차이가 없어야합니다. '' ''''는''\ 'a \' "'와 같습니다. –

답변

1
String str = "this is a 'test' of 'something'"; 
String rep = str.replaceAll("'[^']*'", "($0)"); // stand back, I know regex 

은 내가 여기에 한 일은 사용 발가락 모든 일치를 검색 replaceAll() 방법 (C# 코드, 번역하기 쉬워야한다) regex "'[^']*'"의 경우 정규식 "($0)"으로 바꿉니다.

패턴 "'[^']*'" 경기 시작하고 작은 따옴표 (')로 끝나는, 그리고 그들이 또 다른 작은 따옴표 ([^'])를 제외한 모든 문자, 그리고 사이에 사람들은 여러 번 (*)를 표시 할 수있는 모든 문자열. 그 (것)들을 "($0)"로 대체하는 것은 매치 ($0)를 취하고 그것을 괄호로 묶는 것을 의미합니다.

+0

몇 줄을 설명해 주시겠습니까? 감사합니다;] – ApacheImageUser

+0

@ApacheImageUser - 문제 없습니다. –

-1

당신이 단일 아포스트로피를 무시할 수있는 경우는 다음과 같이 할 수

string input = "this is a 'test' of 'something' and ..."; 
Console.WriteLine(Regex.Replace(input, "'([^']*)'", "('$1')")); 
+0

LOL, 게시 C#이 나쁜가요? 이 코드는 OP가 자신의 문제를 해결할 수있는 방법을 찾을 수 없습니까? –

0

당신이 [ ']이 있고 ['], 당신이 할 수 항상 경우 쉬운 방법 중 하나 (그러나 항상 유효하지 않습니다)는 다음 입니다 :

myString.replace(" '"," ('"); // replaces all <space_apostrophe> with <space_bracket_apostrophe> 

후면 브라켓을 위해 동일한 작업을 수행 :)


한 가지 더 - 왜 아포스트로피로 둘러싸인 단어가 있습니까? 반드시 그렇게 되어야만 하는가? 당신이 그렇게 만든다면, 왜 당신은 그것을 한 다음 다른 접근법을 찾았습니까!