2016-04-17 4 views
1

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

String n = 
\ul\insrsid14762702 Symptom}{\insrsid14762702\ul\insrsid14762702 Acid}{\insrsid14762702\ul\insrsid14762702 Nonacid}{\insrsid14762702\ul\insrsid14762702 All}{\insrsid14762702 
Reg\tab 100%\tab 100%\tab 100% 
Stg pain\tab 100%\tab 83%\tab 100% 
F pain\tab 72%\tab 0%\tab 67% 

Я хотел бы видеть, сколько вкладок есть, но я всегда получаю ноль возвращается для размера ArrayList я думал, что добавление к. Мой код:

Pattern patternTabs = Pattern.compile("\\tab",Pattern.DOTALL); 
Matcher matcherTabs = patternTabs.matcher(n); 

//Add the values between each tab. 
ArrayList<String> colValue = new ArrayList<String>(); 

int count = 0; 
while (matcherTabs.find()) 
    colValue.add(matcher.group()); 
count++; 

System.out.println("ffffffffffffff"+colValue.size()); 

Я попытался \\\\tab\tabtab все остальные перестановки в квадратных скобках, но без радости.

+0

[вхождений подстроки в строке] (http://stackoverflow.com/q/767759) – Tom

+0

Вы пытаетесь найти 'tab' слово или' \ T' пробел? – 11thdimension

+0

@Sebastian, спрашивая про пробелы, некоторые воспроизводимые демо на, скажем, ideone.com, были бы действительно полезны. Или, по крайней мере, код, который можно скопировать/вставить в среду IDE. Это очень полезно в целом, но очень полезно, когда тема является предметом. –

ответ

1

Буквальный обратный слэш в регулярном выражении требует обратных косых черт в строковом литерале (2 для регулярных выражений, удвоился снова для Java), так что ваше регулярное выражение должно быть:

"\\\\tab" 

Но ваша другая «проблема» является слишком много кода; просто использовать split():

String[] colValues = n.split("\\\\tab"); 
Смежные вопросы