regexp для соответствия string1, если не предшествуется string2

"Для" цикла, работающего в потоке GUI? Если так, да, Вам будет нужен DoEvents. Можно хотеть использовать отдельный Поток, в этом случае DoEvents не требовался бы. можно сделать это в VB6 (не простой).

15
задан finnw 26 August 2009 в 10:19
поделиться

5 ответов

Требуется утверждение отрицательного просмотра назад нулевой ширины. Попробуйте / (? , который говорит именно то, что вы ищете, то есть найдите все «y», перед которыми не стоит «x», но не включает предыдущий символ, который является часть нулевой ширины.

Отредактировано для добавления: По-видимому, это поддерживается только в Ruby 1.9 и выше.

34
ответ дан 1 December 2019 в 01:17
поделиться

Ruby, к сожалению, не поддерживает отрицательный просмотр назад , поэтому у вас возникнут проблемы, если вам нужно будет искать более одного символа. Для всего одного символа вы можете решить эту проблему, зафиксировав совпадение:

/[^x](y)/
2
ответ дан 1 December 2019 в 01:17
поделиться

В PCRE вы используете отрицательный просмотр назад:

(:<!x)y

Не уверен, что это поддерживается Ruby, но вы всегда можете посмотреть вверх.

-1
ответ дан 1 December 2019 в 01:17
поделиться

Это можно сделать с помощью отрицательного просмотра назад, (?

-1
ответ дан 1 December 2019 в 01:17
поделиться

Извините за подключение моих собственных материалов (или, если это не разрешено / неодобрительно в SO), но я быстро написал в блоге о своем опыте реорганизации ресурсов в большом Silverlight 2 (т.е. без MergedDictionaries) проект некоторое время назад. Сообщение здесь .

это намного сложнее, если вы хотите избежать гораздо большего, чем один символ перед y . Тогда вам нужно будет сделать что-то вроде:

"abby y crabby bally +y".scan(/(.*?)(y)/).reject {|str| str[0] =~ /ab/}  # => [[" ", "y"], [" ball", "y"], [" +", "y"]]
"abby y crabby bally +y".scan(/(.*?)(y)/).reject {|str| str[0] =~ /ab/}.map {|match| match[1]}  # => ["y", "y" "y"]
3
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: