Как игнорировать данный символ с помощью регулярного выражения - PullRequest
0 голосов
/ 13 июля 2020

Добрый день,

Я участвую в проекте миграции с SQL Server на DataBricks (Apache Spark), и пока мы пользуемся всеми преимуществами DB, я должен признать, что ' m отсутствуют все эти прекрасные функции Microsoft SQL.

В рамках миграции я пытаюсь написать регулярное выражение, чтобы найти первый экземпляр «-» или «+» и вернуть все символы после этого.

Вот мое регулярное выражение: \+(.*)|\-.*

Вот мой сложный набор тестов:

dlfsdlfkgjbsdfg / sdklfjgsdfgsdfg- sdfgsdfg / sdfgjh- sdfgsdfg / sdfg + sdfgsdfg / sdfgsdgfhf4

Я ожидаю вернуть жирный текст, но сейчас я вижу плюс и минус возвращаются символы.

Скриншот моего кода из RegExr

Я пробовал следующие примеры, но мне кажется, что я упускаю хитрость, потому что я могу выделить все после (но включая) символы, либо только сам символ.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 13 июля 2020

Ваш

\+(.*)|\-.*

Соответствует либо

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

или

дефис и что угодно и ничего не делает с ним.

Вы должны использовать класс символов, а затем захват. *, например

[+-](.*)

или чередование без захвата (по одному из + и -) и захват. * например

(?:\+|-)(.*)
0 голосов
/ 13 июля 2020

Вы можете извлечь совпадения следующего регулярного выражения с установленным флагом однострочный или DOTALL , в результате чего точка будет соответствовать признакам конца строки, а также всем остальным символам.

(?<=[+-]).*

Запустите двигатель!

(?<=[+-]) - это положительный просмотр назад (поддерживается Java), который утверждает, что текущее местоположение в совпадении непосредственно предшествует первый знак плюса или минуса.

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