powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что делает этот регулярник
21 сообщений из 21, страница 1 из 1
Что делает этот регулярник
    #38697520
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
a^([\d]+)


В данном примере ^ не является символом сам по себе.
Чтобы он был символом сам по себе используется эскипирование вот так:
Код: sql
1.
a\^([\d]+)


Я знаю, что этот символ в начале регулярника означает начало строки разбора.
Но если парсер регуляников не считает его за символ сам по себе в середине паттерна, значит у этого символа есть какая-то служебная роль, но тогда какая??
Какой именно строке соответствует этот регуляник?

перепробовали такие строчки:
Код: sql
1.
2.
3.
a1
a^1
a^a



во всех случаях глухо....
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697644
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix
Код: sql
1.
a^([\d]+)


В данном примере ^ не является символом сам по себе.
Чтобы он был символом сам по себе используется эскипирование вот так:
Код: sql
1.
a\^([\d]+)


Я знаю, что этот символ в начале регулярника означает начало строки разбора.
Но если парсер регуляников не считает его за символ сам по себе в середине паттерна, значит у этого символа есть какая-то служебная роль, но тогда какая??
Какой именно строке соответствует этот регуляник?

перепробовали такие строчки:
Код: sql
1.
2.
3.
a1
a^1
a^a



во всех случаях глухо....

в середине $ означает конец строки...это тоже что (\n|\n\r) ибо разные варианты конца строки могут быть

^а означает что перед этим символом, должен быть конец строки перед а

идентично положительному предпросмотру (просмотру назад)


мог ошибиться в деталях примеров. т.к. не каждый день работаю с регулярками, но суть именно втом, что означают они тоже самое.
ЗЫ регулярки не всегда для одной строки применяються, а для многострочного текста в там числе.
(?<=\n|\r\n)a
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697647
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

грёбаный тачпад, последний пример относиться к значку шапки(аналог, с положительным просмотром назад)
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697658
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

судя по твоему объяснению, регуляник a^a должен метчить строку a\na
Но не метчит...
Либо я не понял толкование...
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697672
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
регулярник ^b спокойно метчит a\nb
но a^b строчку a\nb метчить не хочет, хотя по логике вроде как должен
может у ^ в середине паттерна вообще нет никакого действия??
т.е. шапка является службным символом но нагрузки не несет...
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697684
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ах да, совсем забыл... a^a ничего не делает,

делает тоже что

а=1 И а=2 - никогда не истино

к слову о этих значочках

по умолчанию, это означает начало конец текста(НЕ СТРОКИ)
тоесть если текст = "line1\nline2\nline3"

то подойдут регулярки

/line1.^line2/ ибо под точку подпадёт конец строки(при включоном модификаторе sm перый разрешает под точку подходить любому символу включая \r \n, а второй включает значение ^ $ - начало и конец строки )

без модификатор m ничего не подойдёт - ибо символы означают начало и конец всего текста целиком!!!
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697689
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя в разных средах могут быть отличия вплане модификаторов и работы по умолчанию

вчасности в джаваскрипте не опознаёться модификатор s
вот в фаербаге пробовал
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38697715
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix,

вообще, метасимвол ^ показывает ПОЗИЦИЮ В СТРОКЕ, а именно НАЧАЛО строки.
у любой строки(даже пустой) есть начало(и есть конец). вот именно это начало и означает этот метасимвол.

возможно метасимвол имеет дополнительные смыслы в некоторых экзотических реализациях Регекспов. но я не встречал.
даже интересно стало. что это можно означать, и ГДЕ это реально работает
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698411
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uLumix,

вообще, метасимвол ^ показывает ПОЗИЦИЮ В СТРОКЕ, а именно НАЧАЛО строки.
у любой строки(даже пустой) есть начало(и есть конец). вот именно это начало и означает этот метасимвол.

возможно метасимвол имеет дополнительные смыслы в некоторых экзотических реализациях Регекспов. но я не встречал.
даже интересно стало. что это можно означать, и ГДЕ это реально работает

яж писал

комбинация ^а в середине, идентична части регулярного выражения с просмотром назад, а именно что перед а должен быть символ конца строки. токо символы конца строки могут быть
разные, так проще задавать.

а вообще этот символ означает не начало строки, а начало ТЕКСТА. если текст многострочный, то то ничего не найдёт при наличии такого символа в середине.

чтобы этот символ начал означать не начало ТЕКСТА, а начало СТРОКИ нужно применить модификатор.

ЗЫ
всё брал из википедии, что бы проверить у себя в консоли(джаваскрипт) и постить сюда
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698524
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453комбинация ^а в середине, идентична части регулярного выражения с просмотром назад, а именно что перед а должен быть символ конца строки. токо символы конца строки могут быть разные, так проще задавать.
дело в том, как я писал, символ ^ означает позицию(начало текста, строки), ни про какие символы речи нет. если строка одна, то перед ней НЕТ символа перевода строки, хотя ^ привяжется именно к её началу.
в документации про "просмотр назад" тоже ни слова.
откуда информация? пруф можно где это конкретно описано?

alex564657498765453а вообще этот символ означает не начало строки, а начало ТЕКСТА. если текст многострочный, то то ничего не найдёт при наличии такого символа в середине.
не так.
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698525
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453а вообще этот символ означает не начало строки, а начало ТЕКСТА. если текст многострочный, то то ничего не найдёт при наличии такого символа в середине.
все очень просто.
если стоит модификатор m, то ^ работает ДЛЯ КАЖДОЙ строки. если поиск глобальный - то ^ работает только раз, для начала ВСЕГО текста.

никакого "просмотра назад" - НЕТ.
привидите пример на php, где четко сработает регулярка /a^b/m
тоесть найдет строку начинающуюся с 'b' , и перед началом строки чтоб был симовл 'a'
начало строки сработает, а вот "просмотр назад", для символа 'a' не будет работать, ибо это ваша фантазия - не более.

просто покажите рабочий пример. просто я не могу заставить регулярки работать так как вы описываете. с просмотром назад.
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698547
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r ualex564657498765453а вообще этот символ означает не начало строки, а начало ТЕКСТА. если текст многострочный, то то ничего не найдёт при наличии такого символа в середине.
все очень просто.
если стоит модификатор m, то ^ работает ДЛЯ КАЖДОЙ строки. если поиск глобальный - то ^ работает только раз, для начала ВСЕГО текста.

никакого "просмотра назад" - НЕТ.
привидите пример на php, где четко сработает регулярка /a^b/m
тоесть найдет строку начинающуюся с 'b' , и перед началом строки чтоб был симовл 'a'
начало строки сработает, а вот "просмотр назад", для символа 'a' не будет работать, ибо это ваша фантазия - не более.

просто покажите рабочий пример. просто я не могу заставить регулярки работать так как вы описываете. с просмотром назад.

да, я тоже присоединяюсь к этой позиции
мы пробовали на разных языках, разные строковые комбинации, но паттерн с ^ в середине ничего не дает
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698769
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixr uпропущено...

все очень просто.
если стоит модификатор m, то ^ работает ДЛЯ КАЖДОЙ строки. если поиск глобальный - то ^ работает только раз, для начала ВСЕГО текста.

никакого "просмотра назад" - НЕТ.
привидите пример на php, где четко сработает регулярка /a^b/m
тоесть найдет строку начинающуюся с 'b' , и перед началом строки чтоб был симовл 'a'
начало строки сработает, а вот "просмотр назад", для символа 'a' не будет работать, ибо это ваша фантазия - не более.

просто покажите рабочий пример. просто я не могу заставить регулярки работать так как вы описываете. с просмотром назад.

да, я тоже присоединяюсь к этой позиции
мы пробовали на разных языках, разные строковые комбинации, но паттерн с ^ в середине ничего не дает


а если бы внимательно читали!!!!
===цитата моего пред поста

ах да, совсем забыл... a^a ничего не делает,

делает тоже что

а=1 И а=2 - никогда не истино

...
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698781
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непереводите тему.

alex564657498765453комбинация ^а в середине, идентична части регулярного выражения с просмотром назад,
объясните вот это ваше предложение!
в каком случае будет работать как "просмотр назад" ?
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38698851
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixr uпропущено...

все очень просто.
если стоит модификатор m, то ^ работает ДЛЯ КАЖДОЙ строки. если поиск глобальный - то ^ работает только раз, для начала ВСЕГО текста.

никакого "просмотра назад" - НЕТ.
привидите пример на php, где четко сработает регулярка /a^b/m
тоесть найдет строку начинающуюся с 'b' , и перед началом строки чтоб был симовл 'a'
начало строки сработает, а вот "просмотр назад", для символа 'a' не будет работать, ибо это ваша фантазия - не более.

просто покажите рабочий пример. просто я не могу заставить регулярки работать так как вы описываете. с просмотром назад.

да, я тоже присоединяюсь к этой позиции
мы пробовали на разных языках, разные строковые комбинации, но паттерн с ^ в середине ничего не дает

%%вно вопрос

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$data = "line1abc\nline2abcLine3abc\nLine4abc\n";

echo "<h1>Hi</h1><pre>";

$reg = '/(.+)(^Line\d)(.*)/sm';

$result = preg_match_all($reg, $data, $matches);

var_dump($data);
var_dump($reg);
var_dump($result);
var_dump($matches);



вывод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
string(35) "line1abc\nline2abcLine3abc\nLine4abc\n"
string(21) "/(.+)(^Line\d)(.*)/sm"
int(1)
array(4) {
  [0] =>
  array(1) {
    [0] =>
    string(35) "line1abc\nline2abcLine3abc\nLine4abc\n"
  }
  [1] =>
  array(1) {
    [0] =>
    string(26) "line1abc\nline2abcLine3abc\n"
  }
  [2] =>
  array(1) {
    [0] =>
    string(5) "Line4" //не подскажите, почему именно Line4???
  }
  [3] =>
  array(1) {
    [0] =>
    string(4) "abc\n"
  }
}

ещо раз, для непонятливых

^ $ ещо есть \b \B \G
это метасимволы позиционирования..они не указывают на символ, он определяют, что должно быть до/после текущего символа.

например граница слова...мы можем и другим способом задать границу слова - положительным просмотром, но легче так.

итаки да, порсер разобрав регулярку, не будет искать абстрактное понятие в строке..будет искать "предметные символы", а если рядом есть из вышеуказаного, проверит - выполняеться ли условие позиционирования.
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699022
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453%%вно вопрос
ну хитрец.
зачем добавил s модификатор?
да еще три группы из за скобок.

результат странный. нужно думать почему так сработало.

результат с индексами 0 и 3 это вообще сработали первая и третья группа регулярки. не зря же вы скобки сделали))
они нам ненужны. меняем регулярку:
Код: php
1.
$reg = '/(?:.+)(^Line\d)(?:.*)/sm';


результат естественно меняется:
Array(
[0] => Array (
[0] => Line1abc\nLine2abcLine3abc\nLine4abc
)
[1] => Array (
[0] => Line4
)
)

почему Line4 - мне непонятно.
где тогда Line2? оно тоже прекрасно подходит под регулярку.

в общем очень неоднозначный пример. как просомтр назад явно не работает. а хавает из за жадности плюс срабатывает вторая группа. там описано начало но не описан конец группы.
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699067
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

всё. понял)

вот так более наглядно
Код: php
1.
$reg = '/\n^Line\d/m';


результат:
Array(
[0] => Array (
[0] =>Line2
[1] =>Line4
)
)

теперь хотябы логично.

так срабатывает как просмотр назад.

спасибо. в таком ключе не встречал применения ^
буду знать.

хотя вопрос ТС так и остался бех ответа.
у него то совсем другой случай. регулярка /a^([\d]+)/

на каких данных она сработает?
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699201
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r ualex564657498765453,

всё. понял)

вот так более наглядно
Код: php
1.
$reg = '/\n^Line\d/m';


результат:
Array(
[0] => Array (
[0] =>Line2
[1] =>Line4
)
)

теперь хотябы логично.

так срабатывает как просмотр назад.

спасибо. в таком ключе не встречал применения ^
буду знать.

хотя вопрос ТС так и остался бех ответа.
у него то совсем другой случай. регулярка /a^([\d]+)/

на каких данных она сработает?

для того и стоял модификатор s, чтобы показать наглядность(правда в пхп её трудно увидеть)
дело втом что пхпшный обработчик регулярок ...

лучше по другому.
джаваскриптовые регулярки, они за конец строки примут всё то что и визуально начинает новую строку

а это
\r
\n
\r\n

попробуйте в консоли вывести текст "a\na\ra\r\na" - каждая а в отдельной тсроке

и тогда ваш пример для наглядности, вместо
\n надо писать \n|\r|\r\n - что явно хуже чем ^ :)

=======
по поводу
a^\d
и подобного я писал

это тоже что некоторые в мускле умудряються написать
where a=1 and a=2

a^b - всегда ложно, ибо ^перед б ожначает начало строки === перед б либо пусто либо один из вариантов окончания строки
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699212
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r ualex564657498765453,

всё. понял)

вот так более наглядно
Код: php
1.
$reg = '/\n^Line\d/m';


результат:
Array(
[0] => Array (
[0] =>Line2
[1] =>Line4
)
)

теперь хотябы логично.

так срабатывает как просмотр назад.

спасибо. в таком ключе не встречал применения ^
буду знать.

хотя вопрос ТС так и остался бех ответа.
у него то совсем другой случай. регулярка /a^([\d]+)/

на каких данных она сработает?

ах да...не помню где, но гдето я встречал синтаксис регулярок, что вроде символ шапки
имеет спецзначение либо первым, либо первым в квадратных скобках...в остальных случаях он сам по себе...

может ТС имено накопал регулярку написаную для такого синтаксиса
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699546
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453r ualex564657498765453,

всё. понял)

вот так более наглядно
Код: php
1.
$reg = '/\n^Line\d/m';


результат:
Array(
[0] => Array (
[0] =>Line2
[1] =>Line4
)
)

теперь хотябы логично.

так срабатывает как просмотр назад.

спасибо. в таком ключе не встречал применения ^
буду знать.

хотя вопрос ТС так и остался бех ответа.
у него то совсем другой случай. регулярка /a^([\d]+)/

на каких данных она сработает?

ах да...не помню где, но гдето я встречал синтаксис регулярок, что вроде символ шапки
имеет спецзначение либо первым, либо первым в квадратных скобках...в остальных случаях он сам по себе...

может ТС имено накопал регулярку написаную для такого синтаксиса

Ну вот в php решулярки так работают, если я правильно понял. У них ^ в начале регулярки - это начало текста (строки), [^abc] - ни один из символов. Если не ошибаюсь, то ещё там срабатывает (^abc) как отрицание группы (но утверждать не буду, точно не помню)
...
Рейтинг: 0 / 0
Что делает этот регулярник
    #38699857
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрЕсли не ошибаюсь, то ещё там срабатывает (^abc) как отрицание группы (но утверждать не буду, точно не помню)
в php такого нет
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что делает этот регулярник
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]