アイブ氏は前に非常に似て質問をして、この正規表現を実装小数 "x", "^", "(", "24", "-", "3", "x", ")"
すべての文字で分割するが、維持番号の正規表現とは、一緒に
今、同じ条件でストリングを分割する必要がありますが、10進数も一緒に保持する必要があります。 ATMの場合、(0.5)
のような入力は"(", "0", ".", "5", ")"
になりますが、string
のように1つにグループ化しておくためには10進数が必要です:"(", "0.5", ")"
。 は[0-9]+|[a-z]+|[()^*/+-]
のような例何か、すなわち、1つ以上の数字のために、あなたがトークン間で
の代わりに滑り、なぜ '\ D +のようなものを探していない| \ワット+:あなたはまた、マルチ文字の演算子を持っている場合は、そのよう
!=
や<=
として、あなたは別の論理和にこれを変更することができます+ - * /] '? –あなたは誰かから答えを得るかもしれませんが、間違った場所で探しているという非常に強い気持ちがあります。後でネストした角括弧などで評価したい場合は、正規表現ではなく、適切な文法パーサーでそれを行うべきです。それは最初のところで少し仕事ですが、すぐに払い戻され、将来の要件を満たすことができます –
@ArturBiesiadowski、正規表現は文法パーサの入力ストリームをトークン化するための完全に有効な方法です。結局のところ、良い古い 'lex'が動作する方法です。 –