1 (изменено: ypppu, 2016-03-15 15:04:57)

Тема: AHK: RegExMatch шаблон с несколькими необязательными элементами

В строке из которой нужно забрать нужные данные может не быть значений и\или элементов используемых в шаблоне для RegExMatch, как дополнить шаблон, что-бы он мог пропускать необязательные элементы?

  • Набор различного текста1 то что нужно - 1 набор_12_цифр1 123456789012 тест_которого_может_и_не_быть_набор_различного_теста2 то что нужно - 2 тут_конец_2текста куча текста символов и тд набор_10_цифр2 1234567890 любой текст

  • Набор различного текста1 то что нужно - 1 набор_12_цифр1 123456789012 тест_которого_может_и_не_быть_набор_различного_теста2 тут_конец_2текста куча текста символов и тд набор_10_цифр2 1234567890 любой текст

  • Набор различного текста1 то что нужно - 1 набор_12_цифр1 123456789012 тест_которого_может_и_не_быть_набор_различного_теста2 то что нужно - 2 тут_конец_2текста любой текст

  • Набор различного текста1 то что нужно - 1 набор_12_цифр1 123456789012 тест_которого_может_и_не_быть_набор_различного_теста2 тут_конец_2текста любой текст


Haystack := "Набор различного текста1 то что нужно - 1 набор_12_цифр1 123456789012 тест_которого_может_и_не_быть_набор_различного_теста2 то что нужно - 2 тут_конец_2текста куча текста символов и тд набор_10_цифр2 1234567890 опять любой текст"
NeedleRegEx := "i).*текста1 (.*)набор_12_цифр1 (1\d{11}) тест_которого_может_и_не_быть_набор_различного_теста2 (.*) тут_конец_2текста.*набор_10_цифр2 (1\d{9}).*"
RegExMatch(Haystack, NeedleRegEx , UnquotedOutputVar)
MsgBox % UnquotedOutputVar1 "`n" UnquotedOutputVar2 "`n" UnquotedOutputVar3 "`n" UnquotedOutputVar4

2 (изменено: Drugoy, 2016-03-15 11:47:59)

Re: AHK: RegExMatch шаблон с несколькими необязательными элементами

как дополнить шаблон, что-бы он мог пропускать необязательные элементы?

Там где у вас подгруппа состоит из .* - * уже подразумевает, что вхождений может не быть.
Там где у вас чётко обозначенная длина подгруппы (например (1\d{11})) - там достаточно добавить ? после захватываемой суб-группы, чтобы обозначить, что вхождений может не быть.

3

Re: AHK: RegExMatch шаблон с несколькими необязательными элементами

Nikva пишет:

Набор различного текста1 то что нужно - 1

То что нужно должно иметь какие то признаки, либо наоборот признаки должны быть у того что ненужно, иначе всё вместе это набор различного текста. Если у того что нужно в данных примерах есть правая граница 12 цифр или конец строки, то его начало в нынешней постановке вопроса не может быть известно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: RegExMatch шаблон с несколькими необязательными элементами

serzh82saratov

+ структура такая

Красным - помечал текст который не изменен.
Зеленым - то что мне нужно получить.
... - что угодно любые символы и знаки(но не подпадают под метки и номера)
метка начала текста 1
нужный текст 1
метка начала номера 1
123456789012
... - что угодно любые символы и знаки(но не подпадают под метки и номера)
метка начала текста 2 - в любом случае метка есть
текст которого может не быть
метка конца текста 2 - в любом случае метка есть
... - что угодно любые символы и знаки(но не подпадают под метки и номера)
- дальше ни меток ни номера может и не быть.
текст который не нужен
метка конца текста 2 (такая-же как у второго текста и мой шаблон на неё постоянно смотрел)
... - что угодно любые символы и знаки(но не подпадают под метки и номера)
метка начала номера 2
1234567890
... - что угодно любые символы и знаки(но не подпадают под метки и номера)

Drugoy
Просто добавление "?" мне не помогло.
Спасибо за помощь, но вопрос больше не актуален, я не стал делать через RegExMatch, тк не понимаю его.