私は多項式であることを望む文字列を持っています。"2x^2-3x+1
のようなものです。正規表現を使用して、式の各項をグループ化したいと考えています。私は現在"^(-?\d?x(\^\d)?)+"
を持っています。私はオプションのマイナス記号、次に数字、次にx、そしてオプションの指数部をキャプチャしようとしています。これは "^ someNumber"の形式でなければなりません。だから私の上の多項式の場合、私はグループ1を"2x^2"
、グループ2を"-3x"
、グループ3を"+1"
としたいと思うだろう。まず、(someGroupExpression)+
があれば、someGroupExpressionごとにグループが生成されますか?第2に、指数部については、ネストされたグループにすることは望ましくありません。これは、用語グループをループするのが面倒になるためです。指数部がグループ化せずに従うべきルールを指定するにはどうすればよいですか?質問を明確にすることができるかどうか教えてください。多項式の正規表現
多項式の正規表現
答えて
ネストされていない、または重複していないグループ内の各サブ式を取得するには、次の正規表現を使用します。
正規表現:([+-]?[^-+]+)
説明:それは各試合を重複することなく全体の各部分式をキャプチャします。
Javaコード
String exp = "2x^3+4x^2+5x-42";
Pattern pattern = Pattern.compile("([+-]?[^-+]+)");
Matcher matcher = pattern.matcher(exp);
int x=0;
while (matcher.find()) {
x=x+1;
System.out.println("Group "+x+": " + matcher.group(1));
}
すべてのサブ表現を考慮し、より堅牢な正規表現は次のようになります。
正規表現:ダブルエスケープのためのJavaで([+-]?(?:(?:\d+x\^\d+)|(?:\d+x)|(?:\d+)|(?:x)))
使用\\
。 \d
は\\d
、\^
は\\^
になります。
@nilcit:それでは変更します。私は '+'や '--'のような式の中で記号を区切ることだけをチェックしています。緑色のチェックマークは、**回答を受け入れるためのものです。したがって、これが**解決策**であると確信している場合にのみ受け入れてください。それが役に立ったらUpvoteだが、答えを受け入れる前に考える。 –
私は自分自身で解決策を理解しようとしましたが、次のようになりました: '([+ - ]?[^ - \^+ \\] + x(?:\^[x - \\]))?) ' - 私は電卓型のアプリケーションのためにこれを意図しているので、ユーザーが入力できる唯一の記号は10進数、プラス、マイナス、除算、乗算記号、' x'記号です。ご助力ありがとうございます! – nilcit
@nilcit:あなたが思いついた正規表現は係数のない最後の数字を残しています。もう一度それをチェックしてください。 –
- 1. 正規表現が不正な形式の多項式
- 2. 正規表現式
- 3. 正規表現式
- 4. 単項記号と正規表現とのマッチング正規表現
- 5. 正規表現のサブ式
- 6. 正規表現のパターン式
- 7. PHPの正規表現式
- 8. FQDN/URL形式バリデーター正規表現の正規表現2
- 9. 数学正規表現式
- 10. 正規表現式支援
- 11. 正規表現式文パターン
- 12. Asp.net正規表現バリデーターバリデーション式
- 13. 正規表現を使用してJSの多項式文字列表現を変換する
- 14. 正規表現の正規表現の正規表現
- 15. 正規表現は私の正規表現と多分間違っ
- 16. 正規表現の正規表現と ' -
- 17. 正規表現の正規表現データ
- 18. 正規表現の正規表現
- 19. C#正規表現の正規表現
- 20. 正規表現用の正規表現
- 21. 正規表現の10進形式
- 22. 時間形式の正規表現
- 23. 正規表現のエラー:式が
- 24. Javascriptの正規表現形式
- 25. 入れ子式のオラクル正規表現
- 26. 算術式の正規表現
- 27. Pythonの正規表現形式
- 28. 正規表現最初の式
- 29. 正規表現の通貨形式
- 30. Pythonの正規表現に似た式
非キャプチャグループを使用しますか? –
ノンキャプチャグループ!それはちょうど私の質問の2番目の部分を探していたものです。ありがとう、私はグーグルで試してみましたが、私は悪い言い訳をしたと思います。 – nilcit
[この回答](http://stackoverflow.com/questions/36438736/ruby-regex-to-capture-any-numerical-characters-in-a-string/36438777#36438777)をご覧になることをお勧めします。 。 –