2014-09-23 2 views
-6

Мне нужно сопоставить все символы конца предложения, такие как !, ?, . (период) и т. Д. В данном тексте.Регулярное выражение для соответствия марке конца предложения

Может ли кто-нибудь помочь мне с регулярным выражением для выполнения такой вещи?

Пример ввода:

This is the f!!rst sentence! Is this the second one? The third sentence is here... And the fourth one!! 

Выход:

This is the f!!rst sentence Is this the second one The third sentence is here And the fourth one 
+3

Хотя задавать любой вопрос, пожалуйста, имейте в виду, чтобы дать ввод образца и ожидаемый результат. Это предотвратит ответы только на основе допущений. – TheLostMind

+1

Что вы уже исследовали и попробовали? – Pieter21

+0

Люди помогут вам, если вы зададите вопрос, полезный не только вам. Это не так. – Mena

ответ

0
[!?.]+(?=$|\s) 

Попробуйте this.You можете добавить маркеры в needed.Replace на ``.

См. Демонстрационную версию.

http://regex101.com/r/lS5tT3/15

+0

Именно то, что я хотел! Спасибо.Кстати, можете ли вы порекомендовать хороший способ узнать рег-выражения? Мне нужно освоить этот материал рано или поздно, поэтому мне нужно хорошее место, где я могу начать с – user2306772

+0

@ user2306772 попробовать сейчас. – vks

+0

@ user2306772 см. Ваш exmaple.you удалил все из середины, как well.correct это в первую очередь. – vks

0

Вы, вероятно, хотите, чтобы соответствовать что-нибудь следуют в конце предложения с последующим пробелом (\ S +) (*.?). Поскольку !, ? а также . являются специальными символами, вам нужно их исправить.

например

Pattern pattern = Pattern.compile("(.*?)[\\!\\?\\.]\\s+"); 
Matcher matcher = pattern.matcher("one two. three! four five? "); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

печатает

one two 
three 
four five 
+0

Этот ответ не особенно полезен никому. Сам вопрос не ясен. – TheLostMind

+0

Серьезно? Кажется, я достаточно объяснил, чтобы мозг думал. В следующий раз я не буду беспокоиться. –

+0

Я, вероятно, смутился, задав вопрос очень случайным образом. Я торопился и нуждался в быстрой помощи, и я не стал подробно разбираться. В любом случае, я сделал редактирование. Lance Java, ваш ответ был, безусловно, полезен, но я полагаю, что это не то, что я искал. – user2306772

0

Ниже регулярное выражение будет соответствовать символы без слов (кроме пробелов), которые должны соблюдаться символ пробела или конца строки якоря. Функция replaceAll помогает удалить все совпадающие символы.

String s = "Blah! blah? blah... blah blah!!"; 
System.out.println(s.replaceAll("[^\\w\\s]+(?=\\s|$)", "")); 

Выход:

Blah blah blah blah blah 

Если вы хотите удалить только ?, ., ! символов, который присутствовал на последней в слове, вы можете попробовать следующий код.

String s = "This is the f!!rst sentence! Is this the second one? The third sentence is here... And the fourth one!!"; 
System.out.println(s.replaceAll("[!?.]+(?=\\s|$)", "")); 

Выход:

This is the f!!rst sentence Is this the second one The third sentence is here And the fourth one 
+0

Спасибо тонну! И решение vks, и ваше дело отлично! – user2306772

+0

@ user2306772 вы не пробовали отредактированный – vks

+0

@vks Я отправил ответ перед вашим редактированием. См. Изменения. –

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