Java Regex, чтобы разделить слова, знаки препинания, пробелы, новые строки, но сохранить сокращения? - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу разбить длинную строку на массив ее содержимого по слову с помощью регулярного выражения. Прямо сейчас я использую (? <= \ B), но проблема в том, что он разбивает слова, которые являются сокращениями (например, вы исправляете, и тому подобное). Мне нужно регулярное выражение, которое сделало бы пунктуацию своим собственным элементом, за исключением случаев, как указано выше, наряду с табуляцией, пробелами, а также новыми строками, являющимися их собственными элементами. Есть идеи? </p>

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я думаю, что вам нужно посмотреть на определение \b ("граница слова"), а затем \ w ("слово") и переопределить ' как часть слова. Примерно так, хотя все зависит от того, нужны ли вам разделители или вы можете позволить регулярному выражению проглотить их.

   public static void main( String[] args ) {
      String test = "Don't fear the reaper.";
      String regex = "[^a-zA-Z0-9']";
      System.out.println( Arrays.toString( test.split( regex ) ) );
   }

Выход:

run:
[Don't, fear, the, reaper]
BUILD SUCCESSFUL (total time: 0 seconds)
0 голосов
/ 10 сентября 2018

Проверьте StringTokenizer. Вы можете указать несколько разделителей (2-й параметр) и указать, возвращать ли такие разделители (3-й параметр имеет значение true для возврата пробела, новой строки, табуляции и т. Д.). Если вы не хотите, чтобы пробел, табуляция, символ новой строки возвращались как токены, установите значение false (или еще лучше, не используйте третий параметр).

String testString = "this isn't\nright\t 'cause it ain't true";
StringTokenizer s = new StringTokenizer(testString," \n\t\r",true);
while (s.hasMoreTokens()) {
    System.out.println("'" + s.nextToken() + "'");
}

Выходы:

'this'
' '
'isn't'
'
'
'right'
'   '
' '
''cause'
' '
'it'
' '
'ain't'
' '
'true'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...