2017-01-17 40 views
6

Cách tìm văn bản giữa dấu gạch chéo thứ hai và thứ tư trong một đường dẫn như /folder/subfolder-1/subfolder-2/subfolder-3? Tôi đang cố gắng thay thế điều này bằng một cái gì đó như /folder/new-folder/subfolder-3.Làm thế nào trong notepad ++ tìm/thay thế văn bản giữa các dấu gạch chéo?

Điều quan trọng nhất đối với tôi là có thể tìm được một phần sau số n - dấu gạch chéo.

Tôi đã thử regex /((.*?)/){3}, nhưng nó không hoạt động.

Trả lời

3

Sử dụng trận đấu Resetter \K meta ký tự bạn có thể làm điều đó một cách đơn giản hơn.

Find:

/.*?/\K(.*?/){2} 

Replace with:

new-folder/ 
+0

hoặc sử dụng phủ định: ['/[^/]*/\K[^/]*/[^/]*/'](https://www.regex101.com/r/fnDFdA/1) –

+0

Hoàn hảo!! Đó là làm việc cho tôi. Cảm ơn bạn. Bạn có thể vui lòng giải thích cho tôi điều đó không? Nó hoạt động như thế nào? – MartiX

0

{2} chỉ ra 2 cấp độ sau khi mức độ đầu tiên sẽ được repalced bởi new-folder

Find:

(\/.*?\/)(.*?\/){2}(.*) 

Thay thế:

$1new-folder/$3 

Demo: https://regex101.com/r/XIA3IN/3

+0

Đó là nhấn mạnh đến cuối dòng, Làm thế nào tôi có thể chỉ đánh dấu cho đến khi dấu gạch chéo? – MartiX

+0

Hãy thử điều này: '(\/.*? \ /) (. *? \ /) {2} (\ S + \ b)' – MYGz

1

Để tìm văn bản giữa thứ hai và cắt giảm bạn có thể sử dụng regex ^(/[^/]*/)([^/]*/[^/]*) sau đó bạn có thể tham chiếu đến văn bản giữa các dấu gạch ngang với \2 khi thay thế văn bản.

Để giữ văn bản trước dấu gạch chéo, bạn có thể nhập nội dung như \1myNewTextBetweenSlashes2and4.

+0

Cảm ơn, nhưng nó làm nổi bật từ dấu gạch chéo thứ 3 cho đến cuối tài liệu. Vì vậy, nó có nghĩa là trong dòng tiếp theo nó làm nổi bật cũng văn bản trước khi cắt giảm, và trên dòng đầu tiên tất cả các văn bản sau khi cắt giảm quá. – MartiX

+0

Có nó đánh dấu văn bản trước dấu gạch chéo, nhưng bạn có thể nhập văn bản trước dấu gạch chéo một lần nữa khi thay thế bằng '\ 1'. Nếu dòng của bạn bắt đầu bằng dấu gạch chéo, bạn có thể thêm '^' vào đầu để không khớp với dấu gạch chéo sau. – FlyingFoX

0

Trong notepad ++ Tìm theo này:

(/[^/]+)(?:/[^/]+/[^/]+/)(.*) 

Và Replace của thành viên này:

\1\/new-folder/\2 

Hãy chắc chắn rằng: .matches xuống dòng không được chọn

+0

Đó là làm nổi bật cho đến cuối dòng, Làm thế nào tôi có thể đánh dấu cho đến khi dấu gạch chéo? – MartiX

2

Một cách để bạn có thể để nó là bằng cách sử dụng chuỗi này trong mẫu để thay thế

(/.+?)(/.+?){2}(/\S+) 

Và sử dụng này trong mô hình của bạn để thay thế nó với

$1/new-folder$3 

Từ chuỗi của bạn:

/folder/subfolder-1/subfolder-2/subfolder-3 
  • (/.+?) sẽ phù hợp /folder như $ 1

  • (/.+?){2} sẽ phù hợp /subfolder-1/subfolder-2$ 2(không sử dụng)

  • (/\S+) sẽ phù hợp với tất cả mọi thứ đó không phải là một không gian, trong trường hợp này /subfolder-3 như $ 3

Rời bạn phòng để chèn mới thư mục của bạn ở giữa.

+0

Đó là làm nổi bật cho đến cuối dòng, Làm thế nào tôi có thể đánh dấu cho đến khi dấu gạch chéo? – MartiX

+0

Thay vì '(/.+)', cho tham số cuối cùng, sử dụng '(/.+?/)', nếu phần bạn muốn chụp là $ 3 kết thúc bằng một '/'. – TaoStyle

+0

Tôi đã cập nhật mã, bằng cách thay thế tham số cuối cùng bằng (/ \ S +), nó phải gần với kết quả bạn đang tìm kiếm hơn. – TaoStyle

1

Làm cách nào tôi có thể đánh dấu cho đến dấu gạch chéo?

  • Find what: (/[^/]+/)[^/]+/[^/]+
  • Replace with: $1new-folder
Các vấn đề liên quan