2

文字列内のコマンドを認識するために使用される正規表現を作成しています。コマンドが開始できる単語は 3 つあり、それらは常にセミコロンで終わります。

正規表現パターンは次のようになるはずです。

(command1|command2|command3).+;

私が見つけた問題は、.任意の文字+に一致し、1 つ以上に一致するように指示するため、セミコロンの最初のインスタンスをスキップして続行することです。

遭遇したセミコロンの最初のインスタンスで停止させる方法はありますか? .代わりに使うべきものは他にありますか?

4

3 に答える 3

5

これに直面している問題 (command1|command2|command3).+;は、+が貪欲であることです。つまり、最後の値まですべてに一致します。

これを修正するには、貪欲でないようにする必要があります。そのためには、次?のように演算子を追加する必要があります。(command1|command2|command3).+?;

参考までに、オペレーターにも同じことが当てはまります*。a を追加する?と、貪欲ではなくなります。

于 2012-10-22T06:12:43.980 に答える
3

非セミコロンのみを検索するように指示します。

[^;]+
于 2012-10-22T06:12:16.540 に答える
1

あなたが探しているのは、貪欲でない一致です。

.+?

"?"貪欲な+量指定子の後は、デフォルトで可能な限り一致するのではなく、可能な限り少なく一致させます。

あなたの正規表現は

'(command1|command2|command3).+?;'

Python RE のドキュメントを参照してください

于 2012-10-22T06:12:18.247 に答える