2016-05-01 3 views
0

мне нужно разобрать строку, которая может выглядеть как один из них:Зависимость символа в регулярных выражениях

define a as 5 
define b as 5.5 
define c as "hello, stackoverflow" 

Я пытаюсь сделать это с помощью регулярных выражений. Для этого я написал картину
'define ([a-zA-Z_]\w*) as ([\w"][\w \.]*[\w"]*)'
Моя проблема, что я не понимаю, есть ли способ, чтобы проверить: если после слова-л as начинается с ", то он должен заканчиваться ". Спасибо за любые комментарии и предложения.

+1

Возможно, ['define ([a-zA-Z_] \ w *) как (" [^ "] +" | [\ w.] +) '] (Https://regex101.com/r/pN1jE8/1) достаточно? –

+0

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

+0

@ WiktorStribiżew спасибо. Вот и все. Плохо;) – Aero

ответ

1

Я предлагаю использовать чередование:

define ([a-zA-Z_]\w*) as ("[^"]+"|[\w.]+) 

Посмотреть regex demo

The ("[^"]+"|[\w.]+) захватывает либо котируемой подстроку, которая не имеет кавычки внутри ("[^"]+" - разрешить пустой "", использовать * вместо +) - OR- 1+ словные символы или точки (соответствует [\w.]+).

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