Мой шаблон регулярного выражения (\ d * \.? \ D +)? (\ Svarious \ s)? Я хочу только сопоставить десятичные числа и нормальные числа и конкретную строку "различный" Но в результате я получил требуемый выше результат ...

0
Ajay Chinni 14 Фев 2021 в 12:50

2 ответа

Лучший ответ

В настоящее время вы сопоставляете все индексы в своей строке, потому что обе группировки необязательны. Фактически позволяет сопоставить любую позицию в строке, за которой ничего не следует. Согласно моему комментарию, вы можете попробовать:

(?:\d+(?:\.\d+)?|\svarious\s)

См. Интерактивную демонстрацию.

  • (?: - открыть 1-ю группу без захвата:
    • \d+ - 1+ цифр.
    • (?: - Открыть вторую группу без захвата:
      • \.\d+ - буквальная точка и 1+ цифр.
      • )? - Закройте вторую группу без захвата и сделайте ее необязательной.
    • | - Или:
    • \svarious\s - буквально записывать "различные" с начальным и конечным пробелом.
    • ) - закрыть 1-ю группу без захвата.
1
JvdV 14 Фев 2021 в 10:05

Выражение, которое вы пытаетесь, также соответствует 0 символам (бесконечное число). Это у вас неправильные совпадения. Пожалуйста, попробуйте следующее

((\d*\.?\d+)|(\svarious\s))
1
Haseena P A 14 Фев 2021 в 10:00
66194183