2016-04-12 14 views
1

Ağ otomasyonu için bazı komut dosyalarını yapmaya çalışıyorum. Sistemimiz bir MySQL arka uç kullanan HP Ağ Otomasyonudur. Temel olarak, yapmaya çalıştığım şey, tüm aygıtları belirli bir standarda uymayan bir yapılandırma ile bulacak bir komut dosyası oluşturmaktır. RW | Hepimiz benzer çizgiler bulmak istiyoruzPOSIX REGEX - "YALNIZCA" bir dizeyi belirli bir biçimde içeren tüm satırları bul, ancak ek parametreler içeren benzer dizeleri değil

snmp-server community blah RO 
snmp-server community blah2 RW 1 
snmp-server community blah3 RO blahacl 

ama sadece bu RO arkasında bir şey olmadan:

Yani, dizeleri biz inceliyoruz.

yüzden istiyorum: snmp-server community blah RO Biz istemiyoruz: snmp-server community blah2 RW 1 veya

Herhangi bir yardım snmp-server community blah3 RO blahacl mutluluk duyacağız. Örneğin, snmp-server.*?(RO|RW)(?!\w|\W) gibi bir dizi birleşimi denedim, ancak her satır için RO | RW'yi bulur. RO veya RW'den sonra karakterleri olanları istemiyorum ...

+0

Posahlı ve tembel eşlemeli POSIX regex? –

+1

Dil nedir? Regex kütüphanesi nedir? –

+0

Başvuru Kılavuzu şu şekildedir: "Not: (regexp) içerir ve içermez (regexp) operatörleri, veritabanına özgü düzenli ifade SQL sorgularını temel alır. Ayrıntılı bilgi için, SQL veritabanı gibi SQL veritabanı gibi ayrıntılı bilgi için bkz. veritabanı, Oracle® Veritabanı SQL Başvurusu bakın. " Bu durumda MySQL kullanıyoruz (Oracle Değil) –

cevap

0

snmp-server.*?(RO|RW)$'u deneyin. $ regex

+0

olarak Bildiğim kadarıyla POSIX ERE'de tembel nicelikler yok. – sweaver2112

+0

Benim için mükemmel çalışıyor ... FYI - https://tr.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions – Munir

+0

Çok teşekkürler. "$" Ile birkaç kombinasyon denedim boşuna. –

0

Aşağıdaki RegEx deneyebilirsiniz için sonu hattı göstergesidir:

snmp-server.*?(RO|RW)$ 

$ bir dize sonuna deliminates, bu nedenle bu dize RO veya bitmelidir belirten edilir RW. Bu

Live Demo on Regex101

+0

Çok teşekkürler. "$" Ile birkaç kombinasyon denedim boşuna. –

+0

@BenShellrude Bunu gerçekten denedin mi? – Druzion

0
^snmp-server.*(blah\b) (RO|RW)$ 
  • '$' dizisinin sonuyla eşleşir sonra veri yoktur olabileceği anlamına gelir
  • teminat altın '\ b' (Bir maç RO ya RW biter) 'blah' dizesinden sonra bir kelime sınırı (sözcüğün sonu) vardır, bu yüzden herhangi bir karakter blah peşindeyse, eşleşmez.
  • bu çalışıyor olursa olsun regex ayrıştırıcı uygun satırlı modunu etkinleştirmek için emin olun. Sadece verilen örnek dizeleri ve POSIX seçeneğiyle here ile test

, eğer doğru anlamak sizin numunede ilk satırı ile eşleşir metin, ancak ikinci veya üçüncü değil.

+0

Bu, benim için bir söz tutmuş görünüyordu ("blah", herhangi bir karakter türünü içeren herhangi bir karakter olabilir - bir boşluk hariç). Maalesef hala işe yaramadı. Yukarıda bahsettiğim gibi, HP ürününe yönelik referans kılavuzu, bu özel sorgu/operatör için, regex'in veritabanına özgü REGEX SQL sorgularına dayandığını belirtmektedir ... Bu yüzden, bunun neden çalışmadığıyla ilgili bir şey olup olmadığından emin değilsiniz. .. –

1

Bu MySQL olduğundan, yalnızca tembel nokta eşleştirmelerini ve negatif görünüm kümelerini kullanamazsınız.

Ayrıca, bir sözcük sınır deseni MySQL'de çok spesifiktir, [[:<:]] (önde gelen bir sözcük sınırı için) ve [[:>:]] (sondaki bir satırdır).Bu yana

WHERE col REGEXP BINARY '^snmp-server.*[[:<:]]R[OW]$' 

: Eğer girişleri ^snmp-server ile başlayan ve bütün bir kelime RO veya RW ile biten maç gerekir Yani, bir harf duyarlı bir şekilde eşleşecek BINARY anahtar kelime eklemek için

WHERE col REGEXP '^snmp-server.*[[:<:]]R[OW]$' 

kullanmak ifade, .* nedeniyle geneldir, .*'u boşluk olmayan topakların ve bilinen değişmezlerin miktarı ile değiştirerek yeniden sınırlamak isteyebilirsiniz. Eğer sıkı snmp-server community some123$%^-thing_here RO veya snmp-server community some&*|2-thing_there RW gibi girdileri maç olacak

WHERE col REGEXP BINARY '^snmp-server community [^[:space:]]+ R[OW]$' 

Bu kullanabilir, ise snmp-server ve community başında vardır ve sonra bir boşluk olmayan yığın takip etmek sonra ve RO sağ gelmelidir.

+0

Hmmm .... hoşlanmadı [[: <:]] '- _Invalid Criteria String'i verir: Element type" value "," * "veya" /> "_ dize geçen arka planda kod ile bir şeyler yapmak varsayalım ... Diğer komik şey, '$ 'ile çalışması gerektiği gibi görünüyor, ama neredeyse tamamen'^'veya' $ 'göz ardı ediyor gibi görünüyor. Bunu nasıl yorumlayacaklarına dair bir problem gibi göründüğü için bu satıcıya gitmem gerekebilir. Bunu yapmak için başka bir fikrin ya da alternatif bir yolunuz yoksa? –

+0

MySQL'de böyle yapılır, belki de farklı bir şeyiniz var. –

İlgili konular