Звучит так, будто вам нужно только слово (подстрока), если оно находится в определенном контексте?
В вашем случае вы можете перезапустить регулярное выражение на полпути, если вы хотите иметь начальные и конечные условия (несколько условий) для строки, но в то же время хотят использовать эти условия только как «операторы if», а не как часть результата.
Следующий метод использует этот метод и использует перезапуски (\K
), чтобы извлечь только искомую подстроку.
# The string has to start with "xlink:href="
xlink:href=
# Fetch everything up to our match, and the restart the regex
.*\K
# The strings we are looking for
(RADU3[-_])
# String has to end with ".svg"
(?=(.*\.svg))
Если вы хотите, чтобы вся строка соответствовала нашим правиламвы ищете что-то вроде этого:
#The string has to start with "xlink:href"
^(xlink:href=).*
# The strings we are looking for
(RADU3[-_])
# String has to end with ".svg"
(\w+\.svg)
#Get everything after .svg too
.*
Если вы хотите, чтобы окончание "
только после .svg, вы хотели бы изменить последнюю часть, где я просто взять все после .svg
Вы можете поиграть с тем, что я придумал на regex101 (без принадлежности, просто люблю их сайт): https://regex101.com/r/g0v07V/3/