2013-02-12 2 views
0

у меня есть некоторые входные данные, такие какRegex для соответствия шаблона в кавычках

некоторая строка с «приветом» внутри «и внутри»

Как я могу написать регулярное выражение, так что цитируемый текст (независимо от того, сколько раз это повторяется) возвращается (все вхождения).

У меня есть код, который возвращает одиночные кавычки, но я хочу сделать так, чтобы он возвращал несколько мест где:

String mydata = "some string with 'hello' inside 'and inside'"; 
Pattern pattern = Pattern.compile("'(.*?)+'"); 
Matcher matcher = pattern.matcher(mydata); 
while (matcher.find()) 
{ 
    System.out.println(matcher.group()); 
} 
+0

Добро пожаловать в SO, службу генерации регулярных выражений :) – pap

+0

Просто удалите '+' и замените '' '' '' 'while'. –

ответ

3

Найти все вхождения для меня:

String mydata = "some '' string with 'hello' inside 'and inside'"; 
Pattern pattern = Pattern.compile("'[^']*'"); 
Matcher matcher = pattern.matcher(mydata); 
while(matcher.find()) 
{ 
    System.out.println(matcher.group()); 
} 

Выход:

'' 
'hello' 
'and inside' 

Pattern Дайте описание:

'   // start quoting text 
[^']  // all characters not single quote 
*   // 0 or infinite count of not quote characters 
'   // end quote 
+0

Спасибо taky. хотя я уверен, что это произойдет, если в предложении есть апострофы (s или s). – samach

+0

@ samach321 он не будет работать, если апострофы в предложении. Вам следует избегать этого и изменять разбор. – Taky

0

Я считаю, что это должно соответствовать вашим требованиям:

\'\w+\' 
+0

Должно быть, это '' [^ '] *' ' – aa8y

0

\'.*?' является регулярное выражение вы ищете.

Смежные вопросы