используя регулярные выражения с Java String.replace - PullRequest
2 голосов
/ 31 марта 2011

У меня есть два вопроса.

1:

String = xx yy **

Я хочу удалить "xx", чтобы String стал = "yy * "(xx / yy исправлено и * может быть любым) Я пробовал что-то подобное, но это не работает:

string.replaceall("^(xx )$", "");

Разве это не должно заменить первое вхождение" xx ""с" "?

решено (Лукасом)

2:

String = xx yy **

Я хочу удалить" yy **"так что String становится =" xx "Я думал, что-то вроде этого, но так как первый не работает, я подозреваю, что это тоже не будет.

string.replaceall("^( yy)*$", "");

UNSOLVED

Я фактически сформулировал это недостаточно,

xx должно быть **

, поэтому xx не является фиксированным

** гг ** должно стать **, что является первым **

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

В обоих случаях вы используете ^ и $ до и после того, что пытаетесь заменить.Он пытается сопоставить всю строку с битом, который вы хотите удалить.Вот почему он ничего не удаляет.

Если вы действительно хотите заменить первое вхождение xx, вам, вероятно, следует взглянуть на создание Pattern, сопоставив его с текстоми используя Matcher.replaceFirst для выполнения замены.

0 голосов
/ 31 марта 2011

Попробуйте это для вопроса1:

string.replaceFirst("^xx ", "");

для второго:

string.replaceFirst(" yy .*$", "");

EDIT: если регулярное выражение не является обязательным, мы можем использовать это для второго:

string.substring(0, string.indexOf(" yy");

РЕДАКТИРОВАТЬ 2: Если '\ n' будет включен в строку, это работает для второго:

string.replaceFirst(" yy [\\w\\W]*$", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...