Получить вторую часть строки, используя RegEx - PullRequest
1 голос
/ 02 августа 2010

У меня есть строка, подобная этой «first # second», и мне интересно, как получить «вторую» деталь без символа «#» как результат RegEx, а не как захват совпадений с использованием скобок

upd: я забыл добавить еще один специальный символ в конце строки, настоящая строка "first # second *"

Ответы [ 5 ]

5 голосов
/ 02 августа 2010

Если вам необходимо использовать регулярные выражения и вы настаиваете на том, чтобы не использовать группы захвата, вы можете использовать lookbehind в вариантах, поддерживающих их следующим образом:

(?<=#).*

Или вы можете захватить что угодно, кроме #, до конца строки, так что-то вроде этого:

[^#]*$

Опция группы захвата, конечно, такова:

#(.*)
 \__/
   1

Это также соответствует #, но группа 1 захватывает нужную вам часть.

Наконец, альтернатива без регулярных выражений может выглядеть примерно так:

secondPart = wholeString.substring( wholeString.indexOf("#") + 1 )

Могут возникнуть проблемы с некоторыми из этих решений, если # также может появиться (возможно, экранироваться) где-либо еще в строке.

Ссылки

4 голосов
/ 02 августа 2010

Простое регулярное выражение:

/#(.*)$/

Если вы действительно не хотите, чтобы это был захват совпадения, и вы знаете, что в строке есть знак #, но нет той части, которую вы хотите, вы можете сделать

/[^#]*$/

и все регулярные выражения - это то, что вы хотите.

2 голосов
/ 02 августа 2010

Вы можете использовать lookaround для исключения частей выражения.

http://www.regular -expressions.info / lookaround.html

2 голосов
/ 02 августа 2010
/[a-z]+#([a-z]+)/
1 голос
/ 02 августа 2010

если вы используете Java, тогда

вы можете использовать класс Pattern & Matcher.Шаблон дает вам скомпилированную версию оптимизатора регулярного выражения.Matcher дает полное внутреннее представление RE Matches.

Оба Pattern.match & String.spilt дают одинаковый результат, когда first относительно быстрее.* если другой язык вы можете рассмотреть возможность использования обратных ссылок и групп.если вы найдете какие-либо повторы.

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