javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня возникли некоторые проблемы с написанием регулярного выражения
Чего я хочу добиться, я хочу сопоставить следующую строку 6.62 X 25.250755 L
, но только то, что находится после X
символа, или могут быть случаи, когда мне нужно сопоставить следующую строку 25.250755 X 6.62
, в этом случае мне нужно сопоставить то, что находится перед X
символом, и последний случай — это когда у меня есть что-то вроде этого: 25.250755 L X 6.62
или 25.250755L X 6.62
(с или без пробела, с L
символом или без него)
Это то, что у меня есть до сих пор, но этого недостаточно, и я не знаю, как продолжить формирование здесь
/[Xx]([sS]*)$/gm
Комментарии:
1. Вам также нужно извлекать эти числа?
2. @h-sifat да, мне нужно получить это число
25.250755
или любое другое число3. что должно соответствовать этим примерам
25.250755 L X 6.62
или25.250755L X 6.62
есть ли в этом какая-то логика? Что, если строка является25.250755L X 6.62L 123.45L
?4.возможно, вы можете сопоставить последний захват повторяющейся группы захвата
(?: ?(d (?:.d )) ?[XL])
regex101.com/r/I6FTsM/1 (Значение группы выделено зеленым цветом)5. Вау, это работает, большое вам спасибо @Thefourthbird
Ответ №1:
Для ваших данных примера вы можете повторить группу с группой захвата, чтобы захватить значение последней итерации.
(?: ?b(d (?:.d )) ?[XL]) b
(?:
Не группа захвата?b
Сопоставьте необязательный пробел и границу слова(
Группа захвата 1d (?:.d )
Сопоставьте 1 или более цифр с необязательной десятичной частью
)
Закрыть группу 1?[XL]
Сопоставьте необязательный пробел и либо X, либо L
)
Закройте группу без захвата и повторите ее 1 или более разb
Граница слова
Комментарии:
1. Большое вам спасибо за ваше время
Ответ №2:
([0-9]*[.])?[0-9] ?L? X ([0-9]*[.])?[0-9] ?L?
должно работать.
Комментарии:
1. Большое вам спасибо за ваш ответ, я тестирую это, и, похоже, он останавливается на точке, так вы и предполагали? Я хотел бы получить целое число