0

次の形式の特定の式に一致する正規表現を見つけようとしています。

name = value

ただし、一致しないようにする必要があります。

name.extra = value

次の正規表現があります。

([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)

これは最初の式に一致しますが、2 番目の式にも一致します ( extra = value)。

最初の式のみに一致し、2 番目の式には一致しない正規表現が必要です (つまり、ドットを使用)。

4

3 に答える 3

1

^式に開始と$終了を追加するだけです

^([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)$
于 2012-12-28T04:00:39.480 に答える
0

使用している言語はわかりませんが、正規表現を使用する必要はまったくないようです。

PHP を使用している場合は、explode関数を使用して=. 次に、引数名にピリオドが含まれているかどうかを確認します。

于 2012-12-28T05:39:42.467 に答える
0

負の後読みアサーション ( ?<!) が探しているものかもしれません。

簡単な割り当ての場合:(?<!\.)\b(\w+)\s*=\s*(\w+)

まとめ:

  • (?<!\.).=その場所でキャラクターを防ぐ
  • \b= 単語の始まり

キャプチャされた単語は次のとおりです。

  • \1 = 宛先名
  • \2 = ソース名

指定した正規表現を使用すると、次のようになります。

(?<!\.)\b([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)

于 2012-12-28T04:10:09.040 に答える