Saya mencoba untuk menangkap bagian terakhir setelah garis miring terbalik terakhir,
saya membutuhkan \Web_ERP_Assistant
(dengan \
)
Ide saya adalah:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
Tapi saya tidak bisa menemukannya.
Jawaban:
Solusi lookahead negatif Anda misalnya seperti ini:
Lihat di sini di Regexr
sumber
(?:
adalah awal dari grup tanpa penangkap. The.
is any character, ini memeriksa setiap karakter jika tidak diikuti oleh ``.$
. Standar adalah akhir dari string, dengan Multiline sebagai akhir baris. Karena teks percobaan di Regexr memiliki beberapa baris, saya memerlukan opsi ini di sana.(?:[^\\/](?!(\\|/)))+$
menghilangkan garis miring di awal dan mengatasi garis miring ke depan dan ke belakang. Hal ini juga sesuai dengan seluruh string untuk pathes tanpa garis miring di dalamnya misalnya manual.doc(?:(?!\\).)+
. ( ref ) Selain itu, contoh Anda di RegExr menggunakan dua garis miring terbalik untuk memisahkan komponen jalur; seharusnya hanya ada satu, dan ekspresi reguler hanya cocok dengan satu. ( demo )Salah satu yang berhasil untuk saya adalah:
Cobalah secara online!
Penjelasan:
sumber
Pandangan negatif ke depan adalah jawaban yang benar, tetapi dapat ditulis dengan lebih rapi seperti:
Ini mencari kemunculan \ dan kemudian di cek yang tidak cocok, itu mencari sejumlah karakter yang diikuti oleh karakter yang tidak ingin Anda lihat setelahnya. Karena negatif, hanya cocok jika tidak menemukan kecocokan.
sumber
Anda bisa mencoba menancapkannya ke ujung string, seperti
\\[^\\]*$
. Meskipun saya tidak yakin apakah seseorang benar-benar harus menggunakan regexp untuk tugas tersebut.sumber
([^\/]*)$
cocok dengan nama file di jalur untuk kotak Linux. Bisakah Anda menjelaskan cara kerja tanda sisipan^
dalam konteks ini? Saya hanya pernah menggunakannya untuk menandai awal string.[^\/]
cocok dengan karakter apa pun kecuali/
.Bagaimana dengan regex ini:
\\[^\\]+$
sumber
Jika Anda tidak ingin menyertakan garis miring terbalik, tetapi hanya teks setelahnya, coba ini:
([^\\]+)$
atau untuk unix:([^\/]+)$
sumber
Saya menggunakan regex di bawah ini untuk mendapatkan hasil itu juga ketika diselesaikan oleh a
\
[Regex Demo]
sumber