Сопоставление предложений с регулярным выражением в Java - PullRequest
0 голосов
/ 16 апреля 2010

Я использую класс Scanner в Java, чтобы просмотреть текстовый файл и извлечь каждое предложение.Я использую метод setDelimiter на своем Сканере для регулярного выражения:

Pattern.compile("[\\w]*[\\.|?|!][\\s]")

В настоящее время это работает, но в конце предложения остается пробел.Есть ли простой способ сопоставить пробел в конце, но не включить его в результат?

Я понимаю, что это, вероятно, простой вопрос, но я никогда раньше не использовал регулярные выражения, поэтому идите легко:)

Ответы [ 2 ]

5 голосов
/ 16 апреля 2010

Попробуйте это:

"(?<=[.!?])\\s+"

Используется lookarounds для соответствия \\s+, которому предшествует [.!?].


Если вы также хотите удалить знаки препинания, просто включите их как часть матча:

"[.!?]+\\s+"

Это разделит "ORLY!?!? LOL" на "ORLY" и "LOL"

0 голосов
/ 16 апреля 2010

То, что вы ищете, это позитивный взгляд. Это должно сделать это:

Pattern.compile("\\w*[.?!](?=\\s)")
...