powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите составить регулярное выражение
14 сообщений из 14, страница 1 из 1
Помогите составить регулярное выражение
    #34359082
_program_seeker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я прочитал про регулярные выражения, поделал некоторые примеры, но более сложные вещи осуществить трудно и непонятно. Помогите пожалуйста составить регулярное выражение, кторое описывает строку, содержащую любые последовательнсти символов кроме указанной цепочки .

Например, дання строка будет правильной:

some unknown string

а эти строки будут неправильными:
some unknown ABC string
some ABCunknown string
lalalalalalalaABClalalalalala
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359123
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Some people, when confronted with a problem, think “I know,
I'll use regular expressions.” Now they have two problems.
(c) Jamie Zawinski


Нафига для этой задачи регэкспы??? Ну если очень хочешь:
Код: plaintext
1.
2.
if (! /ABC/)  {
   .....
}
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359133
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
учиться полезно

Код: plaintext
1.
grep -v ABC 
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359401
_program_seeker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нафига для этой задачи регэкспы???


потому что эта задача является частной задачей в более общей, которая связана с регекспами.

у меня есть регулярное выражение типа:
Код: plaintext
1.
2.
ABC(.*)ABC


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

что то типа такого:
Код: plaintext
1.
2.
ABC(.*[^ABC])ABC


но это не работает как надо..
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359407
_program_seeker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня возникло затруднение с пониманием - как раз с правилом внутри скобок (внутри группы)
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359423
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а скобки зачем?

файл
Код: plaintext
1.
2.
3.
4.
ABC d ABC
ABC
ABCABC
sssss

команда на выполнение
>grep "ABC.*ABC" файл

ответ

Код: plaintext
1.
2.
ABC d ABC
ABCABC
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359466
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во первых, не
Код: plaintext
ABC(.*[^ABC])ABC

а, скорее,
Код: plaintext
ABC[^ABC]*ABC

во вторых,
тут написано не "не содержащих цепочек ABC",
а "не содержащие символ А или B или C между цепочками ABC"


чето у меня сомнения по поводу возможности решения такой задачи про отсутствие ABC регэкспами
за один проход.

может сначала выбрать
Код: plaintext
1.
ABC.*ABC
а потом удалить все строчки
Код: plaintext
1.
.ABC.
останутся только те, где ABC по краям.

может так?
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359516
_program_seeker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tchingizа скобки зачем?
ну скобки нужны для того чтобы выделить группу и потом использовать ее.
В Java это я использую так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Pattern p = Pattern.compile("ABC([^ABC]*)ABC");
Matcher m = p.matcher("nnnnnnnnnnnnnnnnnnnn"); //проверяемая строка

if(m.find()) {     //если в строке найден паттерн
   String s = m.group( 1 );   //получить группу из строки, тоесть вернется то что входит 
                                   //в подпаттерн, описываемый внутри скобок
}

кстати большое спасибо за идею использовать ABC([^ABC]*)ABC


я попробовал сейчас вначале проэкспериментировать с паттерном ABC([^A]*)ABC
все работает как надо:

nnABCnnnnnnnnnnABCnnnn - здесь выводит true, потому что строка содержит обрамление ABC
nnnnnnnnnnnnnnnnnnnnnn - здесь выводит false, потому что обрамления нет
nnABCnnnnnAnnnnnABCnn - здесь выводит false, потому что внутри обрамления есть запрещенный символ A


но как сделатьзапрещенным не один символ а строгая последовательнгость?
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34359942
_program_seeker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем если конкретизировать еще более вопрос - как сделать отрицание слова в регулярных выражениях?
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34360274
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно, с помощью негативной опережающей проверки!
Например

/unix (?!bash)/

сопоставит только со строчками, где после слова unix и пробела НЕТ слова bash
(пример для Perl)
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34361383
Фотография Strashniy_kon03
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_program_seekerв общем если конкретизировать еще более вопрос - как сделать отрицание слова в регулярных выражениях?
а так?:
ABC(^(ABC)*)ABC
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34361427
Фотография Strashniy_kon03
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (ereg('ABC([^ABC]*)ABC', 'nnABCnnnABCnnnnABCnnnn'))
{
	echo 'OK';
}
else
{
	echo 'BAD';
}

У меня так всё работает.
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34361463
Фотография Strashniy_kon03
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strashniy_kon03
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (ereg('ABC([^ABC]*)ABC', 'nnABCnnnABCnnnnABCnnnn'))
{
	echo 'OK';
}
else
{
	echo 'BAD';
}

У меня так всё работает.
Соврал.
...
Рейтинг: 0 / 0
Помогите составить регулярное выражение
    #34361519
Фотография Strashniy_kon03
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во вот так канает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (!ereg('ABC(.*)((ABC)+)(.*)ABC', 'nnABCnnnnABCnnnnnABCnnnn'))
{
	echo 'OK';
}
else
{
	echo 'BAD';
}
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите составить регулярное выражение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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