2015-03-06 3 views
0

Еще один вопрос о регулярном вопросе:Строка совпадения между двумя другими строками

Я хотел бы взять текст, который существует между двумя разными строками маркера. Дело в том, что строки-маркеры имеют несколько вариантов. Например:

Я очень голоден для бутерброда и завтра я пойду в магазин - захват между «Я очень голоден» и «и»

Я очень устал поэтому я пойду спать. - захват между «Я очень устал» и «.».

Я кодирования в JavaScript, и я подумал:

/string one(.*?)string two|\.|string three|string four/gi 

Но это не похоже на работу. Он просто хватает между string one и string two, игнорируя string three и string four.

Что я делаю неправильно с регулярным выражением?

+0

'/ string one (. *?) (Строка 2 | \. | Строка три | строка четыре)/gi'? – Fabricator

+0

Как вы знаете, сколько слов пропустить и что пропустить? – Adjit

ответ

3

может быть, вам нужно сгруппировать строки, потому что | имеет низкий приоритет,

/string one(.*?)(?:string two|\.|string three|string four)/gi 

редактирование: добавление скобок изменяет приоритет, поскольку выражение в скобках оцениваются перед остальной частью выражения. Кроме того, здесь мы используем группы, не связанные с захватом, потому что мы используем синтаксис (?:.

+0

Привет Аконсу. Это работает. Мне было интересно, можете ли вы добавить к своему ответу о низком приоритете. Почему добавление круглых скобок и приоритет?: Изменить? Извините, я не знаком с регулярным выражением. – Alex

+0

Спасибо за дополнительную информацию. Очень полезно. – Alex

Смежные вопросы