Что я хочу сделать:
Используя Java, я хочу сопоставить шаблон RegEx, если за соответствием не следует сразу после суффикса «яд».
Exemples:
"legitString" RETURNS "legitString"
"legitString blabla" RETURNS "legitString"
"legitString PoisonousSuffix" RETURNS "legitString"
"legitStringPoisonousSuffix" RETURNS no match
Мой вариант использования:
Мне нужно проанализировать как можно больше ссылок из файла, следуя определенному шаблону.
Но некоторые строки файла усекаются и не всегда имеют одинаковую длину (!).
К счастью, когда это происходит, строка заканчивается на «>>». Я должен предположить, что ссылка урезана, и я должен отказаться от нее. Так что ">> $" будет ядовитым суффиксом в моем случае.
С другой стороны, если ">>" находится в середине текста, я должен безопасно извлечь ссылку, как обычно. (Ссылка заканчивается цифрами, но число цифр может отличаться каждый раз, поэтому я не могу это использовать.)
Так что в моем случае:
"REF" RETURNS "REF"
"REF >>" RETURNS "REF"
"REF>>" RETURNS nothing
"REF>> bla " RETURNS "REF" // because in my case, the poison is only poisonous if in the end
Я видел: https://stackoverflow.com/tags/regex/info
Но я попробовал синтаксис
myRegex(?!>>$)
и это выглядит неправильно. Он обрезает последнюю правильную цифру ссылки, когда строка заканчивается на «>>», что является худшим сценарием: поврежденная ссылка проходит.
Я видел: Регулярное выражение для строки, не заканчивающейся данным суффиксом , но:
myRegex(?:(?!>>).).$
отклоняет законные ссылки.
Мое точное выражение (без яда):
\b(SWN-)?WZ-SB\d{2}(-\d{2}){2}-[A-Z]?\d*
должен вернуть SWN-WZ-SB00-49-03-C11 для:
"SWN-WZ-SB00-49-03-C11>> bla"
"SWN-WZ-SB00-49-03-C11 >> "
"SWN-WZ-SB00-49-03-C11 >>"
"SWN-WZ-SB00-49-03-C11 >> bla"
и ничего для:
"SWN-WZ-SB00-49-03-C11>>"
Бонус
Есть ли способ обобщить и использовать функцию, принимающую regexPattern и toxicousSuffix и возвращающую safeRegexPattern?
Спасибо