Что нового

Как возвратить только наибольшее совпадение с шаблоном?

Се-рё-жа

Новичок
Сообщения
13
Репутация
0
Добрый день!
Необходимо возвратить фрагмент текста совпадающий с шаблоном $findText

Код:
$findText="(([нН]е *)(превышает|выше|ниже|менее))"


При выполнении команды для текста "Не менее":

Код:
$arrReplaceText=StringRegExp("Не менее", $findText, 3)

Возвращается :

$arrReplaceText
Row|Col 0
0]|Не менее
1]|Не
2]|менее

Каким образом сделать так, чтобы возвращалось только полное совпадение с шаблоном, т.е. "Не менее"?
 
A

Alofa

Гость
Се-рё-жа сказал(а):
Код:
$arrReplaceText=StringRegExp("Не менее", $findText, 3)
Поменяйте "3" на "2" и почитайте описание к функции.


Добавлено:
Сообщение автоматически объединено:

Ну или так:
Код:
StringRegExp("dfc Не менеетеааа", "(?i)не\h+(?:превышает|выше|ниже|менее)", 2)
 
Автор
С

Се-рё-жа

Новичок
Сообщения
13
Репутация
0
Спасибо за ответ!!

В русском описании функции ответов не нашел. Например там:
(?i) не учитывать регистр символов. Это работает только для символов латинского алфавита.
Как оказывается, не только для латиницы.

Код:
$findText="[Нн]е *(?:ниже|менее|меньше|более|больше)"
$arrReplaceText=StringRegExp("Не менее, не более.", $findText, 3)


$arrReplaceText:
Row|Col 0
0]|Не менее
1]|не более

Итог: Всё супер и как было нужно!!
 
A

Alofa

Гость
Се-рё-жа сказал(а):
... Row|Col 0
0]|Не менее
1]|не более
Вы уверены, что возвращается именно так?

И еще:
Код:
$arrReplaceText = StringRegExp("Енменее, не	более.", $findText, 3) ; А если такая строка?
 
Верх