2014-11-14 3 views
1

У меня есть регулярное выражение, которое делает положительный взгляд. Положительный взгляд основан на том, что «cfu/ml» присутствует в строке, но не включает его в результат.Regex match pattern после положительного взгляда вперед

Вот регулярное выражение:

((((less|greater)\s*tha[nt]\s*)?[><]*[\d]+[\sx,.-]*)*)+(?=CFU\s?/\s?ML) 

Ex строка: "100000000 х 85 х 9345 КОЕ/мл"

Match1: "100000000 х 85 х 9345"

Это работает только отлично, но пытаюсь соответствовать чему-либо после того, как этот позитивный взгляд не работает. То, что я пытаюсь сделать, это добавить еще одну группу захвата результатов после положительного взгляда вперед так.

((((less|greater)\s*tha[nt]\s*)?[><]*[\d]+[\sx,.-]*)*)+(?=CFU\s?/\s?ML)\s*blah 

Пример строки: "100000000 х 85 х 9345 КОЕ/мл бла"

Match1: "100000000 х 85 х 9345"

Match2: "бла"

Кажется как ничто после положительного взгляда вперед, кто-нибудь знает, как я могу это исправить?

ответ

2

Lookaheads zero-width - они не соответствуют никаким символам, они просто утверждают, что определенные условия истинны в этой точке строки. Так что, если lookahead соответствует, то символы после него будут CFU/ML или что бы еще ни посмотрел ваш взгляд.

Вы хотите игнорировать эти символы, но это означает, что они не просто утверждают, что они существуют, но и фактически потребляют их, поэтому они не становятся частью группы соответствия. Например, вместо этого вы можете сделать ваш взгляд не группой для захвата. Полная строка со строкой все еще будет содержать эти дополнительные символы, но группы захвата не будут включать их.

+0

Другими словами, положительные взгляды кажутся бессмысленными в середине регулярного выражения. Практически говоря, вы действительно хотели бы использовать их только в конце регулярного выражения. Поймайте взгляд и просто используйте нормальное выражение. – Jeff

+0

ok Я вижу, что вы говорите, что-то вроде этого (((меньше | больше) \ s * tha [nt] \ s *)? [><] * [\ D] + [\ sx, .-] *) * CFU \ s?/\ S? ML \ s * (blah) – mgmedick

+0

@mgmedick: В принципе, да. Я думаю. Markdown немного исказил ваш комментарий, но группировка выглядит правильно. – cHao

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