0

誰かがこれで私を助けてくれることを願っています。

次のテキストがあります。

XX Oferta de empleo como Gestor Económico teste y financiero en Importante empresa, Jerez de la Frontera XX

だけ合わせたいImportante empresa

次の正規表現は正常に機能します。

XX.* en ([^,]+), .*XX

ただし、テキストにen2 回ある場合、たとえば次のようになります。

XX Oferta de empleo como Gestor Económico en teste y financiero en Importante empresa, Jerez de la Frontera XX

以下に一致します。

teste y financiero en Importante empresa

en一致するときに正規表現でカンマに最も近いものImportante empresaのみを使用するようにする方法を知っているen人はいますか?

ありがとうございました。

4

1 に答える 1

0

あなたの例で.*は、正規表現の開始時の貪欲がすべての s を過ぎて一致し、文字列enの最後までバックトラックして残りの正規表現が一致できるようにするため、機能するはずです。enそれが失敗する状況を 1 つだけ思いつくことができます。それは/U、PHP で修飾子を使用して貪欲な量指定子を遅延させる場合と、その逆の場合です。

ただし、どのような方法でも、要件を明示的にすることができます。

XX.* en ((?:(?!\ben\b)[^,])+), .*XX

ここで、否定先読みは、 andの間に(?!\ben\b)それ以上存在しないことをアサートします(単語境界を使用して、 in orのような誤検出一致を回避します )。enen,\bencuentrodicen

于 2012-12-27T17:51:45.773 に答える