2017-02-03 3 views
1

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

£ 21220 до £ 24565
£ 21220 - £ 24565

Я ищу, чтобы получить два числа от этого. Вначале я тестирую, когда есть «до» в середине, но я не получаю совпадений. Это то, что я до сих пор:

£ (\ D *) \ S^к $ \ S £ (\ d *) \ г

В идеале я хотел бы получить его работу, поэтому он может быть либо '-', либо 'to' посередине.

ответ

2

Используйте чер группу:

£(\d+)\s*(?:-|to)\s*£(\d+)$ 

$ только необходимо, если значение находится в конце строк (ваш шаблон содержит \z, самый конец строки якоря, поэтому я использовано $ здесь.)

См. regex demo. Подробнее

enter image description here

Pattern:

  • £ - фунт валюта знака
  • (\d+) - (захват) групп 1, соответствующих одному или более цифры
  • \s* - 0+
  • пробельные символы
  • (?:-|to) - либо - или to слово
  • \s* - 0+ пробельные символы
  • £ - валюта символ
  • (\d+) - захват группы 2, соответствующие одной или более цифр
  • $ - конец строки (используйте только в случае необходимости).
2

Вы можете использовать круглые скобки и | характер для определения захвата группы с несколькими возможными матчами в рамках одного набора (т.е. (to|-)) будет соответствовать либо «на» или «-» в явном виде:

£\d+\s*(to|-)\s*£\d+ 

Пример

enter image description here

шаблон Br eakdown

  • £ - Знак фунта.
  • \d+ - Один или несколько цифр.
  • \s* - Дополнительное количество пробелов.
  • (to|-) - Группа, которая будет явно соответствовать «или» или «-».
  • \s* - Дополнительное количество пробелов.
  • £ - Знак фунта.
  • \d+ - Один или несколько цифр.
Смежные вопросы