Regex, чтобы игнорировать ведущих персонажей - PullRequest
2 голосов
/ 19 апреля 2011

Я уверен, что есть простое решение, но оно застряло, так что, надеюсь, кто-нибудь может мне помочь.У меня есть несколько строк ввода, которые выглядят так:

FooABC
Foo XYZ123
FooFgh

Мне нужно регулярное выражение (в Java), которое даст мне:

ABC
XYZ123
Fgh

Лучшее, что я пришелдо сих пор получается:

[^Foo\s?].*$

Я думал, что это работает, пока я не заметил, что он удаляет заглавную букву F из Fgh.Можно ли как-нибудь заставить его точно игнорировать первые три символа и один или несколько пробельных символов, а затем просто захватить все остальное?

РЕДАКТИРОВАТЬ / УТОЧНИТЬ

Я должен иметьсказал, что я не могу использовать подстроку / заменить или что-то, что я обычно делал бы в этой ситуации, потому что это регулярное выражение будет введено в развернутый код, который в настоящее время не может быть обновлен.Код делает следующее:

Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( data );
matcher.find();
String extracted = matcher.group();

и затем использует извлеченную строку в качестве ключа для поиска.Таким образом, он должен извлечь ключ за один проход.

Ответы [ 3 ]

6 голосов
/ 19 апреля 2011

Заменить

^Foo\s*

пустой строкой.Используйте .{3}, если вам нужно 3 произвольных символа вместо Foo.


Если вам нужно использовать сопоставление вместо замены, вам нужно использовать группу захвата:

^Foo\s*(.*)$

[^Foo\s?] - это класс символов ([...]) для соответствия любым символам , за исключением (^) и F, o, пробелов (\s) или вопросительный знак ?.Вот почему F в Fgh также совпадают.Если вы хотите группировать скобки, используйте (?:...).

1 голос
/ 19 апреля 2011

А как насчет

String text = text.substring(3).trim();

или решения KennyTM

String text = text.replaceFirst("^Foo\\s*", "");
1 голос
/ 19 апреля 2011
^.{3}\s+.*$

должен сделать трюк (он соответствует 3 произвольным символам в начале строки, одному или нескольким пробелам, а затем что-нибудь до конца строки).

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