/ / Как да се сравни дума, която не е предшествана от "=" с помощта на Regex? - рубин, регрекс, външен вид

Как да съчетаете дума, която не е предшествана от "=", използвайки Regex? - рубин, реге, гледам

Бих искал да извличам символи от кодовете на Fortran в Ruby. Символите ще имат следните модели (ЗАБЕЛЕЖКА: частите тип променлива и атрибути са филтрирани):

a = b, c(2)       ! Match result should be "a" and "c"
d(3) = [1,2, &    ! Match result should be "d"
3]

Регексът, който опитах, е ((?<!=)w+(?![^[]*]+)(?=( |,|(|$))) с lookaround животни. Но поради ограничението на lookbehind, Не мога да съвпадна "= *" за изключване b.

Използвах Rubular за тестване. За ваше удобство вижте тук.

Благодаря предварително!

Отговори:

2 за отговор № 1

За да направите изречението си, можете първо да замените следното празно пространство =

.gsub(/=s+/, "=").scan(/((?<!=)w+(?![^[]*]+)(?=( |,|(|$)))/)

0 за отговор № 2

Едно лесно нещо, което бихте могли да направите, е да разделите линията на две (в "=") и да направите регламента си само в левия операнд.

По този начин не трябва да пишете никакви сложни regex.


0 за отговор № 3

Моят съвет ще бъде да разделяте вашите regex на 2 израза. Regex не трябва винаги да бъде еднопосочен.