Ekspresi reguler untuk string yang tidak dimulai dengan urutan


197

Saya sedang memproses banyak tabel menggunakan program ini , tetapi saya perlu mengabaikan yang mulai dengan label "tbd_". Sejauh ini saya memiliki sesuatu seperti [^ tbd_] tetapi itu tidak cocok dengan karakter-karakter itu.


Bagaimana cara kerja SchemaSpy? Apakah Anda memberikan daftar nama tabel atau Anda memberinya regex dan melakukan pencocokan?
Mark Biek

Saya melewati regex (ini adalah -i flag) dan itu akan mengimpor pertandingan, atau begitulah katanya =)
echoblaze

4
@echoblaze: Jika Anda memproses XML, mengapa Anda tidak menggunakan parser XML? Itu akan jauh lebih mudah daripada menggunakan ekspresi reguler.
Gumbo

Jawaban:


333

Anda bisa menggunakan pernyataan pandangan ke depan yang negatif:

^(?!tbd_).+

Atau pernyataan pandangan balik yang negatif:

(^.{1,3}$|^.{4}(?<!tbd_).*)

Atau hanya set dan penggantian karakter lama:

^([^t]|t($|[^b]|b($|[^d]|d($|[^_])))).*

6
Apakah ini terbatas pada mesin regex tertentu?
Mark Biek

1
Saya hanya bertanya karena yang kedua sepertinya masih cocok dengan tbd_ dalam pengujian saya. Yang pertama bagus.
Mark Biek

5
Lihatlah perbandingan rasa regular-expressions.info
Gumbo

1
@ Gumbo - haruskah itu tidak berakhir. * Bukan. +? Sebuah string yang tbd_ juga dimulai dengan itu ... karena itu menurut definisi tidak perlu diikuti oleh karakter lain? Kalau tidak, contoh yang bagus. Itu memang membutuhkan mesin regex yang mendukung lookaround.
BenAlabaster

1
@ Balabaster: Saya tidak berpikir dia mencari string kosong. Tetapi jika demikian, ia dapat dengan mudah mengubahnya dengan mengganti .+oleh.*
Gumbo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.