2013-11-17 2 views
1

Я пишу программу hashTable. Мне нужны только хеш-значения, которые являются либо словами, либо одиночными символами. Я определяю слово как все, что не имеет пробела или пунктуации, а символом является любая буква (a-z) или (0-9). Это означает, что нет пробелов, новых строк, отступов и т. Д. У меня есть весь текст, который хэшируется как строчный. Я использую метод string.split, хотя было бы правильным выражением регулярного выражения? Я прочитал несколько сайтов и до сих пор смущен. -Спасибовыражение jge regex, все, кроме буквенных символов/строк

+0

Можете ли вы привести примеры ваших данных и что вы пытались? – hwnd

+0

Я хочу «bensherms! Bensherms» bensherms: bensherms », чтобы вернуть массив: [bensherms, bensherms, bensherms, bensherms] – bensherms

ответ

1

Попробуйте следующее, так как кажется, что вы пытаетесь это сделать.

String s = "bensherms_!' bensherms?_ bensherms;$#!bensherms"; 
String[] parts = s.split("(?<!\\W)[\\W_]+"); 
System.out.println(Arrays.toString(parts)); 

См live demo

Выход

[bensherms, bensherms, bensherms, bensherms] 

Регулярное выражение:

(?<!   look behind to see if there is not: 
\W   any character of: non-word characters 
       (all but a-z, A-Z, 0-9, _) 
)    end of look-behind 
[\W_]+   any character of: non-word characters 
       (all but a-z, A-Z, 0-9, _), '_' (1 or more times) 
+0

Это похоже на это. Спасибо – bensherms

+0

Рад, что я мог помочь. – hwnd

+0

Теперь, оглядываясь, как я могу использовать _ в качестве делиметра? – bensherms

1

Узор API содержит ряд полезных predefined character classes, которые предлагают удобные Shorthands для часто используемых регулярных выражений: Для этого случая \\w представляет собой слово символ: [a-zA-Z_0-9] и \\s представляет собой белый символ пробела: [ \t\n\x0B\f\r]. Вы, вероятно, после них.

Например, расколоть вокруг белого пространства, вы должны будете использовать \\s+ где выражение X+ говорит, что X происходит по крайней мере, один или несколько раз. Такое выражение известно как quantifiers.

+0

Что такое символы пробела? – bensherms

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