シーケンスで始まらない文字列の正規表現


196

このプログラムを使用して一連のテーブルを処理していますが、「tbd_」というラベルで始まるテーブルは無視する必要があります。これまでのところ[^ tbd_]のようなものがありますが、それはそれらの文字とは一致しません。


SchemaSpyはどのように機能しますか?テーブル名のリストを渡していますか、それとも正規表現を渡してマッチングを行っていますか?
マークビエク2009年

私は正規表現(それは-iフラグです)を渡しており、一致をインポートするため、いずれにせよ=)
echoblaze

4
@echoblaze:XMLを処理しているなら、なぜXMLパーサーを使用しないのですか?正規表現を使用するよりもはるかに簡単です。
ガンボ

回答:


332

否定的な先読みアサーションを使用できます。

^(?!tbd_).+

または否定的な後読みアサーション:

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

または、単純な古い文字セットと代替:

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

6
これは特定の正規表現エンジンに制限されていますか?
マークビエク2009年

1
私の質問では、その2つ目はまだ私のテストではtbd_と一致しているようです。最初のものは素晴らしいです。
マークビエク2009年

5
regular-expressions.infoのフレーバー比較をご覧ください:regular-expressions.info/refflavors.html
ガンボ

1
@ガンボ-。+の代わりに。*で終わってはいけませんか?tbd_である文字列もそれで始まります...したがって、定義上、他の文字が続く必要はありませんか?そうでなければ、良い例です。それはありませんサポートはかかわらず、前後参照することを正規表現エンジンが必要です。
BenAlabaster、2009年

1
@balabaster:彼は空の文字列を探しているとは思わない。しかし、もしそうなら、彼は簡単に交換することによってそれを変更することができます.+.*
ガンボ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.