Berdasarkan jawaban ini, saya mencoba mencocokkan semua port termasuk G10. If-mib :: ifdescr.10 = 1/1 / g10, kantor ke dmz if-mib :: ifdescr.6 = 1/1 / g6, kantor ke dmz if-mib :: ifdescr.4 = 1/1 / G4) , Kantor ke DMZ ...

0
pablo808 1 अप्रैल 2021, 06:39

3 जवाब

सबसे बढ़िया उत्तर

निम्न कार्य करें:

ifDescr\.\d+\s=\s((?:\d\/){2}g\d+)

Grup penangkapan yang dihasilkan mengandung hasil yang dimaksud. Perhatikan bahwa \d+ menerima satu atau lebih digit, sehingga Anda tidak memerlukan atau operator seperti yang digunakan oleh Anda.

डेमो

Atau, sepertinya angka setelah g akan selalu menjadi angka setelah ifDescr.. Jika itu masalahnya, lakukan ini:

ifDescr\.(\d+)\s=\s((?:\d\/){2}g\1)

Ini pada dasarnya menangkap angka dalam suatu kelompok, kemudian menggunakannya untuk mencocokkan menggunakan backreference (perhatikan penggunaan \1). Hasil yang dimaksud dalam hal ini tersedia dalam kelompok penangkapan kedua.

डेमो

1
CinCout 1 अप्रैल 2021, 04:07

Anda bisa menggunakan jawaban Saya memberi Anda kemarin dan membagi grup pengembalian pertama, 1/1/g10, oleh '/ 'Dan dapatkan bagian ketiga.

1/1/g10

Dibagi dengan '/' memberi

1
1
g10 <- third part

Mengapa menggunakan regex yang lebih rumit ketika Anda dapat menggunakan kode sederhana untuk menyelesaikan tugas?

3
JeffC 1 अप्रैल 2021, 04:35

Dengan sampel yang Anda tunjukkan, bisakah Anda mencoba mengikuti Regex dengan opsi PCRE yang tersedia.

(?<=IF-MIB::ifDescr)\.\d+\s=\s\K(?:\d+\/){2}g(?:\d+)

Berikut ini demo online di atas regex

Atau dengan sedikit variasi penggunaan berikut:

(?<=IF-MIB::ifDescr)\.\d+\s=\s\K(?:(?:\d+\/){2}g\d+)

स्पष्टीकरण: ऊपर के लिए विस्तृत विवरण जोड़ना।

(?<=IF-MIB::ifDescr)  ##using look behind to make sure all mentioned further conditions must be preceded by this expression(IF-MIB::ifDescr)
\.\d+\s=\s            ##Matching literal dot with digits one or more occurrences then with 1 or more occurrences of space = followed by one or more occurrences of spaces.
\K                    ##\K is GNU specific to simply forget(kind of) as of now matched regex and consider values in regex for further given expressions only.
(?:\d+\/){2}g(?:\d+)  ##Creating a non-capturing group where matching 1 or more digits with g and 1 or more digits.

tanpa flavour PCRE: untuk mendapatkan nilai dalam kelompok penangkapan pertama coba-coba berikut, dikonfirmasi oleh op dalam komentar tentang kerjanya.

(?<=IF-MIB::ifDescr)\.\d+\s=\s((\d+\/){2}g\d+)
3
RavinderSingh13 1 अप्रैल 2021, 05:30