Java Regex Все до и включая совпадение - PullRequest
2 голосов
/ 02 декабря 2011

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

, например.Я хочу удалить «123S» и все, что перед ним, я знаю, что могу сделать это с помощью

    string.replaceAll("^.*?(?=[123S])","");
    string.replaceAll("123S","");

Но очень хочу сделать это в одном выражении (не могу найти другой пример нигде!)

Ответы [ 4 ]

4 голосов
/ 02 декабря 2011

Вам не нужно смотреть в будущее:

"abc123Sdef123Sxyz".replaceAll("^.*?123S",""); 

Заменяет только первый случай, если это то, что вам нужно (вывод def123Sxyz).

Если вы хотите заменить до последнего 123S, просто удалите модификатор ?:

"abc123Sdef123Sxyz".replaceAll("^.*123S","");

Выходные данные xyz.

4 голосов
/ 02 декабря 2011

Вы можете сделать это с помощью:

string.replaceAll("^.*123S","");

Удалите не жадных ? в соответствии с последним случаем и .* все до.

2 голосов
/ 02 декабря 2011
string.replaceAll("^.*?123S", "");

(?= - это шаблон «если следуют», который вам не нужен, и [123S] даже не корректен, он, например, поймает «2».

0 голосов
/ 02 декабря 2011
string.replaceAll("^.*?123S","");

Более эффективен и улучшает ясность, чтобы кто-то еще знал, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...