2

私は文字列を持っています:

lorem ipsum Outer.Middle.Last dolor #1
lorem ipsum Outer.Middle dolor      #2

現在、正規表現[[:<:]]Outer.Middle[[:>:]]を使用して文字列#2のみを照合しようとしています。ただし、これは単純な境界のため、文字列#1と#2の両方に一致します。

私はある種の先読みをしようとしまし[[:<:]]Outer.Middle(?!.)[[:>:]]たが、これはひどく間違っています。

PostgreSQLを使用していて、テキスト本文に含まれるクラス名をクエリしているので、正規表現が必要です。

任意の解決策または解決策へのガイダンスをいただければ幸いです。

4

1 に答える 1

3

これは私のために働いた:

select * from my_table where my_col ~ '[[:<:]]Outer\\.Middle[[:>:]](?!\\.)'

。文字はエスケープする必要があり(そうでない場合は、任意の1文字に一致するワイルドカードとして扱われます)、バックスラッシュもエスケープする必要があります。

これは、次と同等です。

select * from my_table where my_col ~ '[[:<:]]Outer[.]Middle[[:>:]](?![.])'
于 2012-12-21T01:35:16.177 に答える