0

正規表現を使用して線形方程式を検証するにはどうすればよいですか、または正規表現を使用する以外に別の方法があります。指数を表すために^を使用します。

2x + 3 =8//これは正常に検証されるはずです

3x + 2y + 4z =12//これは正常に検証されるはずです

4x ^ 2 + 2y = 22 //パワーのため、これは検証されません。

4xy + 3y = 45 // 2つの未知数の積のため、これは検証されません。

2 / x + 4y = 22 //分母が不明なため、これは検証されません。

(3/4)x + 3y + 2z =40//これは正常に検証されるはずです。

4

2 に答える 2

1

あなたが言及したケースは簡単です:

fail if /[xyz]\s*\^/;
fail if /\/\s*[xyz]/;
fail if /([xyz]\s*){2,}/;

$_(これは、式が含まれていると仮定した場合のPerl構文でありfail、あきらめたいときに行うことです。)

xyzここでは、1つの変数の有効な式に置き換えることができます。

ただし、一般に、これには式の実際の解析が必要になります。これは、正規表現ではなく、lex/yaccなどのジョブです。

たとえば、「xy」が正当な変数名である場合、もちろんこれはすべて崩れます。

于 2009-10-15T04:23:30.513 に答える
1

Backus-Naur表記法を使用して、次のような有効な線形方程式の定義を記述することから始めます。

<integer> := <digit> | <integer> <digit>
<constant> := <integer> | ...
<variable> := <letter>
<term> := <constant> | <variable> | <constant> <variable>

等々。

それをバリデーターに変える方法はたくさんあります。ある程度の経験があるので、yacc または bison を使用して、入力が有効な線形方程式である場合にのみ解析ツリーを生成するパーサーを作成します。

正規表現は必要なことを行うにはあまりにも限定的であることに気付くかもしれません.

于 2009-10-15T04:29:13.707 に答える