Мой шаблон регулярного выражения (\ d * \.? \ D +)? (\ Svarious \ s)? Я хочу только сопоставить десятичные числа и нормальные числа и конкретную строку "различный" Но в результате я получил требуемый выше результат ...
2 ответа
В настоящее время вы сопоставляете все индексы в своей строке, потому что обе группировки необязательны. Фактически позволяет сопоставить любую позицию в строке, за которой ничего не следует. Согласно моему комментарию, вы можете попробовать:
(?:\d+(?:\.\d+)?|\svarious\s)
См. Интерактивную демонстрацию.
(?:
- открыть 1-ю группу без захвата:-
\d+
- 1+ цифр. -
(?:
- Открыть вторую группу без захвата:-
\.\d+
- буквальная точка и 1+ цифр. -
)?
- Закройте вторую группу без захвата и сделайте ее необязательной.
-
-
|
- Или: -
\svarious\s
- буквально записывать "различные" с начальным и конечным пробелом. -
)
- закрыть 1-ю группу без захвата.
-
Выражение, которое вы пытаетесь, также соответствует 0 символам (бесконечное число). Это у вас неправильные совпадения. Пожалуйста, попробуйте следующее
((\d*\.?\d+)|(\svarious\s))
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки, синтаксического анализа и преобразования строк. Поскольку регулярные выражения не полностью стандартизированы, все вопросы с этим тегом должны также включать тег, определяющий применимый язык программирования или инструмент.