Сейчас у меня есть регулярное выражение, как:Match строка с точкой и без
([1-9]{0,9}m - [0-9]{0,9}m)
который соответствует фразы типа 1m - 5m
, 7m - 17m
и т.д.
Иногда строка может быть 1.5m - 5m
.
Как я могу сопоставить такие строки?
Сейчас у меня есть регулярное выражение, как:Match строка с точкой и без
([1-9]{0,9}m - [0-9]{0,9}m)
который соответствует фразы типа 1m - 5m
, 7m - 17m
и т.д.
Иногда строка может быть 1.5m - 5m
.
Как я могу сопоставить такие строки?
Вы можете добавить дополнительный дробную часть с (?:\.\d+)?
:
([1-9]{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)
См regex demo
Если первое число может быть любым, замените [1-9]
с \d
.
(?:\.\d+)?
означает матч буквальной точку с последующей одной или более цифрами один или ноль (?
) раз.
\h*
соответствует нулю или более горизонтальным пробелам.
Детали:
[1-9]{0,9}
- от 0 до 9 цифр от 1
до 9
диапазона (заменить \d
, чтобы соответствовать любые цифры)(?:\.\d+)?
- необязательный дробная частьm
- буквальный m
\h*
- ноль или более горизонтальных пробелов-
- буквальный дефис\h*
- ноль или более горизонтальные пробельные\d{0,9}
- любая цифра, от 0 до 9 вхождения(?:\.\d+)?m
- смотрите выше.Если вы планируете, чтобы предотвратить соответствие ведущих нулей в цифрах, но принимает строки, как 101m - 5m
, вы можете захотеть использовать
((?!0)\d{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)
^^^^^
См another regex demo. Взгляд просто ограничит общий \d
, чтобы он не начинался с 0
.
Вы можете попробовать это.
\d+(\.\d+){0,1}m\s-\s\d+(\.\d+){0,1}m
.
после того, как должно быть digits.so подумал, что together.But оно должно быть один или ZERO.so ...
Для сопоставления числа с поплавком используйте '[0-9] + (\. [0-9] +)?' – Tushar
@Jonuux Вы действительно хотели использовать '[1-9] {0,9} M'? Вы хотите, чтобы он соответствовал «m» (не число), но не '10m'? – Biffen