evg64
29-09-2010, 22:33
Добрый день! Пытаюсь написать регулярное выражение, где перед возвращаемым значением содержалась бы либо строка1, либо строка2, в каждой из которых более 1 символа.
Пример:
#Include <Array.au3>
$sSource="aa123ccbb123cc"
; Строка1 в примере "aa", строка2 "bb". То есть, надо выводить все, что между aa и cc либо bb и cc
$sPattern="aa(.*?)cc|bb(.*?)cc"
$aReturn=StringRegExp($sSource,$sPattern,3)
_ArrayDisplay($aReturn,"aReturn")
В примере возвращается 3 значения. Два из них - 123, третье - пустое. Проблема в пустом значении. Как переконструировать все так, чтобы выводились только непустые совпадения?
P.S. Вариант с удалением из массива пустых значений путем их перебора в цикле for не предлагать) Необходимо возвращать только непустые совпадения сразу из StringRegExp.
Пример:
#Include <Array.au3>
$sSource="aa123ccbb123cc"
; Строка1 в примере "aa", строка2 "bb". То есть, надо выводить все, что между aa и cc либо bb и cc
$sPattern="aa(.*?)cc|bb(.*?)cc"
$aReturn=StringRegExp($sSource,$sPattern,3)
_ArrayDisplay($aReturn,"aReturn")
В примере возвращается 3 значения. Два из них - 123, третье - пустое. Проблема в пустом значении. Как переконструировать все так, чтобы выводились только непустые совпадения?
P.S. Вариант с удалением из массива пустых значений путем их перебора в цикле for не предлагать) Необходимо возвращать только непустые совпадения сразу из StringRegExp.