regexpSplit()

Функция “regexpSplit()” обеспечивает сопоставление с шаблоном с помощью регулярных выражений.

Краткий обзор

int regexpSplit(string rexexp, строковая строка, dyn_string и результат, [параметры сопоставления];

ПараметрОписание
rexexpРегулярное выражение. Разрешенные символы см. в http://doc.qt.io/qt-4.8/qregexp.php#capturedTexts разделе “Символы и сокращения для наборов символов”.
Примером может быть, например, “[a-z| A-Z]+” .
В этом примере выполняется поиск букв A.z и A.Z, а знак + выполняет поиск буквы один или несколько раз, что означает, что знак + обозначает по крайней мере однократное повторение. С помощью выражения “[a-z|A-Z]+”, например, можно отделять буквы от цифр.
строкаСтрока, которая проверяется.
РезультатРезультат поиска.
ОпцииДля сопоставления могут использоваться следующие клавиши:
StartPosition: установка начальной позиции для поиска:
(По умолчанию: int 0)
с учетом регистра: установка соответствия с учетом регистра
(по умолчанию: bool false)
Установка минимального соответствия (по умолчанию: bool false): вы можете ограничить результат, используя минимальное соответствие. В следующем примере показан вывод с параметром “minimal” и без “minimal”.
результат dyn_string;
DebugN(regexpSplit(“<b>.*</b>”, “Мы должны быть <b> выделены жирным шрифтом</b>, очень <b> выделены жирным шрифтом</b>!”, результат, makeMapping(“minimal”, FALSE)));
DebugN(“Результат с минимальным значением = false:”, результат);
Вывод отладки:
WCCOAui1:[11]
WCCOAui1:[“Результат с минимальным значением = false:”][элементы dyn_string 1
WCCOAui1: 1: “<b> жирный</b>, очень <b> жирный</b>”

dyn_string result1;
DebugN(regexpSplit(“<b>.*</b>”, “Мы должны быть <b> жирными</b>, очень <b> жирными</b>!”, result1, makeMapping(“минимальный”, TRUE)));
DebugN(“Результат с минимальным значением = TRUE – default:”, result1);
Отладочный вывод:
CCOAui1:[“Результат с минимальным значением = TRUE – default:”][ dyn_string 1 элементы
WCCOAui1: 1: “<b> выделено жирным шрифтом</b>”

Возвращаемое значение

  • Функция возвращает >=0 (Положение совпадения), когда совпадение было успешно найдено.
  • Функция возвращает значение -1, если совпадение не найдено.
  • Функция возвращает значение -2, когда регулярное выражение содержит ошибку. Ошибки могут быть извлечены с помощью функции GetLastError().
  • Функция возвращает -3, когда функция содержит неправильные аргументы.

Ошибки

Смотри выше

Описание

Функция “regexpSplit()” обеспечивает сопоставление с шаблоном с помощью регулярных выражений. Функция выполняет поиск соответствия указанным символам и выделяет их из строки.

ПРИМЕР

Первый пример выполняет поиск букв в строке “This?is6a55Test:=regexSplit### Функция” и выводит буквы:

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «This»

WCCOAui1:][«This»]

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «is»

WCCOAui1:][«is»]

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «a»

WCCOAui1:][«a»]

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «Test»

WCCOAui1:][«Test»]

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «regexSplit»

WCCOAui1:][«regexSplit»]

WCCOAui1:[dyn_string 1 items

WCCOAui1:     1: «Function»

WCCOAui1:][«Function»]

Второй пример отделяет слова, которые были разделены через \, от строки (текста) “Sybcom Company\twww.sybcom.at\tRussia” и выводит их:

WCCOAui1:     1: [dyn_string 4 items

WCCOAui1:     1: «Sybcom Company       www.sybcom.at      Russia»

WCCOAui1:     2: «Sybcom Company»

WCCOAui1:     3: «www.sybcom.at»

WCCOAui1:     4: «Russia»


main(mapping event)

{

  dyn_string 

  result;

  int i = 0;

  string s;

  while( i >= 0 )

  {

   i = regexpSplit("[a-z|A-Z]+", ""This?is6a55Test:=regexSplit###Function"", result, makeMapping("startPosition", i + strlen(s)));

   s = dynlen(result) > 0 ? result[1] : "";

   DebugN(result,  s);

   delay(0, 100);

  }

  dyn_string 

  result;

  DebugN(regexpSplit("^([^\t]+)\t([^\t]+)\t([^\t]+)$", "Sybcom Company\twww.sybcom.at\tRussia", result));

  DebugN(result);

}

Назначение

Регулярные выражения

Смотри также

regexpIndex()regexpLastIndex() 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *