0

私が文字列を持っているとしましょう:

we have apple, coconut and grapes.

正規表現を使用する場合:

^.*\b((apple)|(coconut)|(grape)|(grapes)).*$

と交換する

|$2|$3|$4|$5

|||grape|貪欲になると出力され.*、右から左に一致します。

グループ 2 または 3 などを試す前に、文字列全体の最初のパターン グループ(私の例では '(apple)')を最初に試すように置換の優先順位を付けるにはどうすればよいでしょうか。grapesとの間の順序を置き換えgrapeて、出力を に変更します|||grapes|

複数の置換を使用してこれを行うことができますが、mssql から正規表現を複数回呼び出すことのオーバーヘッドにより、オーバーヘッドが大きくなりすぎる可能性があるのではないかと心配しています。

4

2 に答える 2

2

このようなことを試してみてください。

^((?:.*?(\bapple\b))|(?:.*?(\bcoconut\b))|(?:.*?(\bgrape\b))|(?:.*?(\bgrapes\b))).*$

applecoconutthen 、after grape、および lastが優先されgrapesます。

于 2013-09-25T10:28:01.693 に答える
0

正規表現の代替は左から右に試行されるため、長い代替を最初に配置する必要があります

^.*\b((apple)|(coconut)|(grapes)|(grape)).*$

または、別の単語境界を使用して、単語全体のみが一致するようにします。

^.*\b((apple)|(coconut)|(grape)|(grapes))\b.*$
于 2013-09-25T10:10:50.020 に答える