Regular Expression очень надо

Все, что вы хотели знать о программизме, но боялись спросить.
borei
Маньяк
Сообщения: 4861
Зарегистрирован: 18 авг 2008, 14:51

Re: Regular Expression очень надо

Сообщение borei »

Kiseta писал(а):задача следующая, надо одним движением с помощью Search/Replace задействуя Regular Expression превратить это

Код: Выделить всё

SomeFunction "DIR_AB", "lfskjdf"
SomeFunction "DIR_AB", "sdjfjfalsdjf"
SomeFunction "DIR_BC_AB", "askldjflsakj"
SomeFunction "DIR_CD", "lksdjfaksj"
SomeFunction "DIR_BC", "sakdjff[aslkdf"
SomeFunction "DIR_CD_AB", "skjdhfj"
SomeFunction "DIR_BCD_AB", "woieurowiuer"
SomeFunction "DIR_CD", "xscmnv"
SomeFunction "DIR_AB", "slkdfljs"
SomeFunction "DIR_AB", "llskdjflskjdf"

вот в это

Код: Выделить всё

"lfskjdf"
"sdjfjfalsdjf"
"askldjflsakj"
"lksdjfaksj"
"sakdjff[aslkdf"
"skjdhfj"
"woieurowiuer"
"xscmnv"
"slkdfljs"
"llskdjflskjdf"
короче надо убрать SomeFunction call - это всегда одинаково, плюс первый аргумент, который может быть какой угодно, одинаковый или разный. Сейчас движений от двух и более, в зависимости от того сколько разных вариантов первого аргумена

поможите добрые люди плиз :)

Спасибо!
в linux

cat <file_name> | awk -F ',' '{print $2}' > <new_filename>
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

Kate писал(а):search pattern?
да, хорошо, наверное больше подходит в данном случае, спасибо Kate! :)
Аватара пользователя
Algor
Маньяк
Сообщения: 1355
Зарегистрирован: 14 мар 2006, 01:38
Откуда: Самара->Ванкувер

Re: Regular Expression очень надо

Сообщение Algor »

для строки регекспа в редакторе сработает такое
.*(, )
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

есть вот такой текст

Код: Выделить всё

PROGRESSEmbrace constraintsBuild half a product, not a half-assed productStart at the epicenterIgnore the details early onMaking the call is making progressBe a curatorThrow less at the problemFocus on what won't changeTone is in your fingersSell your by-productsLaunch now 

PRODUCTIVITYIllusions of agreementReasons to quitInterruption is the enemy of productivityMeetings are toxicGood enough is fineQuick winsDon't be a heroGo to sleepYour estimates suckLong lists don't get doneMake tiny decisions 

COMPETITORSDon't copyDecommoditize your productPick a fightUnderdo your competitionWho cares what they're doing?


нужно regular expression который найдет capital letter после которой идет small letter и двинет текст начинающийся с capital letter на new line

find [A-Z][a-z]
replace /n [A-Z] - не работает - capital letter заменяется буквально на [A-Z]

спасибо!
tasko
Графоман
Сообщения: 18705
Зарегистрирован: 20 июл 2003, 09:16
Откуда: Торонто

Re: Regular Expression очень надо

Сообщение tasko »

Kiseta писал(а): find [A-Z][a-z]
replace /n [A-Z] - не работает - capital letter заменяется буквально на [A-Z]

спасибо!
Говрят, надо заменять специальным кодом
John Smith, 385 Central Ave., Cincinnati, OH, 45238
into:
45238, Smith, John, 385 Central Ave., Cincinnati, OH

UltraEdit RegExp:
Find What: %^([a-z]+^) ^([a-z]+^), ^(*^), ^(*^), ^(*^), ^([0-9]+^)
Replace With: ^6, ^2, ^1, ^3, ^4, ^5

UNIX RegExp:
Find What: ^([a-z]+) ([a-z]+), (.*), (.*), (.*), ([0-9]+)
Replace With: \6, \2, \1, \3, \4, \5

http://www.ultraedit.com/support/tutori ... sions.html
Аватара пользователя
mrskhris
Маньяк
Сообщения: 2082
Зарегистрирован: 06 июн 2005, 19:37
Откуда: RU - KY - NW - CQ
Контактная информация:

Re: Regular Expression очень надо

Сообщение mrskhris »

perl -p -i.old -e 's#([A-Z])([a-z])#\n$1$2#g' ttt.txt
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

ага, спасибо всем кто ответил, все сделано (в ручную) как всегда нужно было срочно, быстрее было в ручную, слава богу не много оказалось
Аватара пользователя
Yury
The L'ony
Сообщения: 26202
Зарегистрирован: 22 янв 2004, 13:48
Откуда: Мирный -> Vancouver
Контактная информация:

Re: Regular Expression очень надо

Сообщение Yury »

еще один кладезь, может кому надо:

https://regex101.com/#javascript
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

Найти текст вот в таком виде - с запятой, разные суммы, пробел, CR

Код: Выделить всё

1,887.31 CR
Убрать запятую, пробел, CR, добавить знак минус в начале строки - что бы получилось вот так

Код: Выделить всё

-1887.31
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

Kiseta писал(а):Найти текст вот в таком виде - с запятой, разные суммы, пробел, CR

Код: Выделить всё

1,887.31 CR
Убрать запятую, пробел, CR, добавить знак минус в начале строки - что бы получилось вот так

Код: Выделить всё

-1887.31

Код: Выделить всё

\d\,\d+\.\d+\s+CR
заменила в два шага, сначала минус в начале строки, потом убрать пробел CR

всем спасибо :D
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Re: Regular Expression очень надо

Сообщение Leo Gan »

Kiseta писал(а):задача следующая, надо одним движением с помощью Search/Replace задействуя Regular Expression превратить это

Код: Выделить всё

SomeFunction "DIR_AB", "lfskjdf"
SomeFunction "DIR_AB", "sdjfjfalsdjf"
SomeFunction "DIR_BC_AB", "askldjflsakj"
SomeFunction "DIR_CD", "lksdjfaksj"
SomeFunction "DIR_BC", "sakdjff[aslkdf"
SomeFunction "DIR_CD_AB", "skjdhfj"
SomeFunction "DIR_BCD_AB", "woieurowiuer"
SomeFunction "DIR_CD", "xscmnv"
SomeFunction "DIR_AB", "slkdfljs"
SomeFunction "DIR_AB", "llskdjflskjdf"

вот в это

Код: Выделить всё

"lfskjdf"
"sdjfjfalsdjf"
"askldjflsakj"
"lksdjfaksj"
"sakdjff[aslkdf"
"skjdhfj"
"woieurowiuer"
"xscmnv"
"slkdfljs"
"llskdjflskjdf"
короче надо убрать SomeFunction call - это всегда одинаково, плюс первый аргумент, который может быть какой угодно, одинаковый или разный. Сейчас движений от двух и более, в зависимости от того сколько разных вариантов первого аргумена

поможите добрые люди плиз :)

Спасибо!
Find:
(.* )(\".+\")$
Replace:
\2

работает в Notepad++

Что все это значит? В первых скобках ищется все, что заканчивается на пробел. Во вторых скобках ищется все, что начинается на двойную кавычку, потом хоть один любой символ, потом опять двойная кавычка сразу перед концом строки.
То, что находится в первых скобках обозначается в Replace, как \1 а что в вторых скобках - обозначается как \2
т.е. мы выбрасываем все, что перед последним в строке закаыченным сочетанием. Оставляем все, что в этом последнем сочетании, вместе с кавычками.
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Re: Regular Expression очень надо

Сообщение Leo Gan »

Kiseta писал(а):Найти текст вот в таком виде - с запятой, разные суммы, пробел, CR

Код: Выделить всё

1,887.31 CR
Убрать запятую, пробел, CR, добавить знак минус в начале строки - что бы получилось вот так

Код: Выделить всё

-1887.31
in Notepad++
Find:
((\d{1,3}(,\d\d\d)*)\.?\d*) CR$
Replace:
-\1

Test:
1,887.31 CR
1 CR
1.31 CR
1,887 CR
1,234,234,887.31 CR
1,234,234,887 CR

Result:
-1,887.31
-1
-1.31
-1,887
-1,234,234,887.31
-1,234,234,887
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

Leo Gan писал(а):
Что все это значит? В первых скобках ищется все, что заканчивается на пробел. Во вторых скобках ищется все, что начинается на двойную кавычку, потом хоть один любой символ, потом опять двойная кавычка сразу перед концом строки.
То, что находится в первых скобках обозначается в Replace, как \1 а что в вторых скобках - обозначается как \2
т.е. мы выбрасываем все, что перед последним в строке закаыченным сочетанием. Оставляем все, что в этом последнем сочетании, вместе с кавычками.
Вот! Спасибо за объяснение :up:
не просто, перефразируя библию, бананами накормить, а еще и научить их выращивать :D
Kiseta
Графоман
Сообщения: 8081
Зарегистрирован: 22 фев 2005, 17:33

Re: Regular Expression очень надо

Сообщение Kiseta »

Leo Gan писал(а):
Kiseta писал(а):Найти текст вот в таком виде - с запятой, разные суммы, пробел, CR

Код: Выделить всё

1,887.31 CR
Убрать запятую, пробел, CR, добавить знак минус в начале строки - что бы получилось вот так

Код: Выделить всё

-1887.31
in Notepad++
Find:
((\d{1,3}(,\d\d\d)*)\.?\d*) CR$
Replace:
-\1

Test:
1,887.31 CR
1 CR
1.31 CR
1,887 CR
1,234,234,887.31 CR
1,234,234,887 CR

Result:
-1,887.31
-1
-1.31
-1,887
-1,234,234,887.31
-1,234,234,887
Тоже спасибо!

Код: Выделить всё

1,234,234,887.31 CR
1,234,234,887 CR
зачетно бы в банке на счете смотрелось 8)
Ответить