Как я могу получить:
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
становиться:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
Как я могу получить:
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
становиться:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
Вот способ пойти:
^.*?(x/[^/]+/\S+).*$
$1.full.y
Объяснение:
^ : begining of line
.*? : 0 or more any character, not greedy
( : start group 1
x : literally x
/ : literally /
[^/]+ : 1 or more any character that is not /
/ : literally /
\S+ : 1 or more character that is not a space
) : end group 1
.* : 0 or more any character
$ : end of line
. matches newline
Замена:
$1.full.y : content of group 1 followed by .full.y
Результат для данного примера:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
Так что у тебя есть
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
Неважно, что это за текст.
найти .*(x/[^/]*/[^/\s\b]*[\s\b]).*
заменить на \1
Часть в круглых скобках находки, это ваш х / б ..../ ... шаблон, который вы хотите сохранить.
дает
x/11/1048.1
x/11/i
x/11/a
x/11/b.2
Я считаю, что у некоторых из них есть пробелы после них, что может быть недостатком моего регулярного выражения, но это не имеет значения, мы можем найти пространство в конце строки и удалить его.
найти: (\r?\n)
<- то есть найти пробел, за которым следует разделитель строки или разделитель строки, \r \n или \n, и заменить его только разделителем строки или разделителем строки. Мы удалим пространство из этого.
заменить на: \1
x/11/1048.1
x/11/i
x/11/a
x/11/b.2
И это находит каждую строку, которая начинается с x/ и «захватывает», и заменяет ее на себя, после чего следует .full.y
найти: (^x/.*$)
заменить на \1.full.y
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y