2016-09-21 2 views
-1

У меня есть следующий пример текст:REGEX - контроль

There are 7 apples, 3 lemons. 

У меня есть программное обеспечение, которое поиск с регулярными выражениями шаблона, но в два раза: один для «яблок» (как атрибут) и второй раз для «7» (как значение).

Моя проблема: если я ищу образец «лимоны», он найдет «лимоны», и если я найду «d», он найдет «7», но я хочу «3».

Мой вопрос: Как я могу управлять механизмом регулярных выражений?

+0

'((\ d +) (\ w +))', а затем получить значения групп из каждого совпадения. https://regex101.com/r/jL6pI9/1 – ThePerplexedOne

ответ

0

Если вы хотите цифры, связанные с lemons использовать этот шаблон:

/(\d+)\slemons/ 

Если вы хотите цифры, связанные с apples использовать этот шаблон:

/(\d+)\sapples/ 

Очевидно, что это может быть сушеная вверх которая позволяет вам ввести часть lemons или apples. Он может принять введенный шаблон и добавить к нему регулярное выражение (\d+)\s в буквальном тексте, который вы ищете. Я оставлю эту часть вам.

Если вы хотите, чтобы извлечь все вхождения слова с цифрами рядом с ними, вы можете использовать это регулярное выражение для разбора ваших неструктурированных данных ...

/(\d+)\s(\w+)/g 

... чтобы получить что-то вроде:

\1 # 7 
\2 # apples 

\1 # 3 
\2 # lemons 
+0

Первый вопрос: что представляют собой символы «/»? Второй вопрос: проблема в том, что я могу писать шаблон регулярного выражения без доступа к программному коду. Какой шаблон регулярного выражения может получить доступ ко второй группе совпадений? – CyKon

+0

1. Вы можете опустить символы '/'. Это просто условное обозначение регулярного выражения. 2. '\ 1' получит доступ к первой группе совпадений; '\ 2' получит доступ ко второй группе матчей. – wpcarro

+0

Хорошо, я понимаю. Но мне нужен шаблон регулярных выражений, который находит «3 лимона» и возвращает одновременно (!) «3». Поскольку я могу только одно регулярное выражение и не иметь никакого дальнейшего доступа к результатам (группам) ... – CyKon