Regex в VB6?

С re.findall. Альтернативный вариант между вашими ключевыми словами.

>>> import re
>>> s = "xyzcarbusabccar"
>>> re.findall('car|bus|[a-z]', s)
['x', 'y', 'z', 'car', 'bus', 'a', 'b', 'c', 'car']

Если у вас есть перекрывающиеся ключевые слова, обратите внимание, что это решение найдет первое, с которым вы сталкиваетесь:

>>> s = 'abcaratab'
>>> re.findall('car|rat|[a-z]', s)
['a', 'b', 'car', 'a', 't', 'a', 'b']

Вы можете сделать решение более общий, заменив часть [a-z] на то, что вам нравится, \w, например, или простой ., чтобы соответствовать любому символу.

Краткое объяснение, почему это работает и почему регулярное выражение '[a-z]|car|bus' не будет работать: механизм регулярных выражений пытается чередовать параметры слева направо и « нетерпением », чтобы вернуть совпадение. Это означает, что он считает, что все чередование соответствует, как только один из вариантов был полностью согласован. На этом этапе он не будет пытаться выполнить какие-либо из оставшихся опций, но прекратит обработку и немедленно сообщит о совпадении. С помощью '[a-z]|car|bus' двигатель сообщает о совпадении, когда видит какой-либо символ в классе символов [a-z] и никогда не проверяет, могут ли быть сопоставлены «автомобиль» или «шина».

7
задан Ja7on 4 September 2008 в 20:25
поделиться

3 ответа

Используйте COM-компонент Regex, встроенный в Windows. Можно найти пошаговое при ссылке и использовании его в проекте в: http://www.regular-expressions.info/vb.html

4
ответ дан 7 December 2019 в 03:23
поделиться

У Regex Buddy есть библиотека VB6

Я использую это в Delphi, и это очень хорошо - и Jeff несколько раз бредил о RegexBuddy.

Я не могу говорить за реализацию VB, но она, конечно, достойная внимания.

2
ответ дан 7 December 2019 в 03:23
поделиться

Как Вы, вероятно, знаете, VB6 не поставлялся со встроенной библиотекой регулярных выражений. Можно, однако, использовать тот, обеспеченный ActiveX или библиотекой COM. См. эту статью для деталей.

2
ответ дан 7 December 2019 в 03:23
поделиться
Другие вопросы по тегам:

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