Автор Тема: Как возвратить только наибольшее совпадение с шаблоном?  (Прочитано 436 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Се-рё-жа [?]

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

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


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

Код: AutoIt [Выделить]
$arrReplaceText=StringRegExp("Не менее", $findText, 3)
 

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

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

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

Русское сообщество AutoIt


Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1235
  • Репутация: 174
  • Пол: Мужской
  • Windows7 (x64)
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
$arrReplaceText=StringRegExp("Не менее", $findText, 3)

Поменяйте "3" на "2" и почитайте описание к функции.


Добавлено: Декабрь 02, 2017, 23:30:27
Ну или так:
Код: AutoIt [Выделить]
StringRegExp("dfc Не менеетеааа", "(?i)не\h+(?:превышает|выше|ниже|менее)", 2)

« Последнее редактирование: Декабрь 02, 2017, 23:35:43 от Alofa »

Оффлайн Се-рё-жа [?]

  • Новичок
  • *
  • Сообщений: 12

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Спасибо за ответ!!

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

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


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

Итог: Всё супер и как было нужно!!
« Последнее редактирование: Декабрь 05, 2017, 23:43:22 от Се-рё-жа »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1235
  • Репутация: 174
  • Пол: Мужской
  • Windows7 (x64)
    • Награды
  • Версия AutoIt: 3.3.12.0
... Row|Col 0
0]|Не менее
1]|не более
Вы уверены, что возвращается именно так?

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


Русское сообщество AutoIt

Re: Как возвратить только наибольшее совпадение с шаблоном?
« Ответ #3 Отправлен: Декабрь 05, 2017, 03:08:27 »

Оффлайн Се-рё-жа [?]

  • Новичок
  • *
  • Сообщений: 12

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Спасибо!

Поправил ошибочку.
« Последнее редактирование: Декабрь 05, 2017, 23:45:18 от Се-рё-жа »

Русское сообщество AutoIt

Re: Как возвратить только наибольшее совпадение с шаблоном?
« Ответ #4 Отправлен: Декабрь 05, 2017, 23:32:26 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
2800 Просмотров
Последний ответ Январь 18, 2010, 15:02:58
от Suppir
1 Ответов
3008 Просмотров
Последний ответ Март 31, 2010, 13:09:59
от Yashied
0 Ответов
2231 Просмотров
Последний ответ Апрель 02, 2011, 02:20:12
от CreatoR
0 Ответов
1483 Просмотров
Последний ответ Январь 18, 2012, 19:24:35
от ViktorSPB
1 Ответов
2396 Просмотров
Последний ответ Январь 22, 2012, 17:21:15
от AZJIO
15 Ответов
4434 Просмотров
Последний ответ Январь 28, 2013, 14:55:05
от madmasles
8 Ответов
3758 Просмотров
Последний ответ Ноябрь 02, 2013, 13:45:46
от Redcut
2 Ответов
1503 Просмотров
Последний ответ Март 13, 2014, 20:55:32
от bescom
13 Ответов
3610 Просмотров
Последний ответ Март 21, 2015, 19:45:11
от Garrett
1 Ответов
118 Просмотров
Последний ответ Ноябрь 27, 2017, 08:04:16
от joiner