2023 © RegexOne
メール | Twitter
一見、数値に一致する正規表現を書くのは簡単そうですよね?
任意の数字に一致する特殊文字\dがあり、あとは小数点に一致させるだけでいいんですよね?単純な数値であればそれでいいかもしれませんが、科学的または財務的な数値を扱う場合、多くの場合、正と負の数値、有効数字、指数、さらには異なる表現(千と百万を区切るために使用されるカンマなど)を扱う必要があります。
以下は、遭遇する可能性のあるいくつかの異なる形式の数値です。ドットメタキャラクタを使用して任意の文字ではなく、小数点自体を一致させる必要があることに注意してください。最後の数値をスキップするのに問題がある場合は、その数値が他の数値と比較して行末で終わることに注意してください。
| タスク | テキスト | |
| 一致 | 3.14529 | ![]() |
| 一致 | -255.34 | ![]() |
| 一致 | 128 | ![]() |
| 一致 | 1.9e10 | ![]() |
| 一致 | 123,340.00 | ![]() |
| スキップ | 720p | ![]() |
| 解決策 | 分数、指数などを考慮に入れると、この表現はかなり複雑になる可能性があります。 上記の例では、式^-?\d+(,\d+)*(\.\d+(e\d+)?)?$は、オプションの負符号、1つ以上の数字、オプションでカンマとそれ以上の数字が続き、その後に小数部(ピリオド、1つ以上の数字、および別のオプションのコンポーネント、指数とそれ以上の数字で構成される)が続く文字列に一致します。 これら数値文字列のセットに一致する式は多数ある可能性があるため、これが唯一の解決策ではありません。 |