2015-08-18 3 views
1

У меня есть текст, как (:year) я хочу, чтобы извлечь год и заменить его на 1. Я используюЗаменить регулярных выражений в Java

replaceAll("\\:[a-z A-Z]+?($|\\W)", "1"); 

Это дает мне ответ (1. Снимает закрытие . скобка Какие изменения я должен сделать, чтобы исключить эту закрывающую скобку

Input может быть. (: год),: год: год хххх, а также:. год может быть в конце строки, используя это в JAVA

+0

Почему вы соответствия на любое слово после ':' когда вы только хотите, чтобы соответствовать на 'year'? – Andreas

+0

его пример может быть не год, может быть: месяц или: время или: переменная ничего .. –

+0

Но разве вам не нужно знать слово, чтобы знать, что должно быть значением замены? – Andreas

ответ

4
replaceAll("\\:[a-zA-Z]+\\b", "1"); 

Просто используйте \b или word boundary .Увидь демо.

https://regex101.com/r/uF4oY4/71

+1

woww .. thats so simple .. thanks dude .. –

+0

Выражение можно улучшить, удалив пробел между 'z' и' A' и '?' После '+'. – Andreas

+0

@Andreas thanx много ... сделано – vks

1

Включите вторую группу в качестве положительного результата. ive lookahead - это утверждения, которые не будут захватывать никаких символов, но утверждают, возможно ли совпадение или нет.

string.replaceAll("\\:[a-z A-Z]+?(?=$|\\W)", "1"); 
+0

спасибо, что вы спасли мой день :) –