Regular Expression очень надо

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

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

Сообщение borei » 24 июн 2015, 23:16

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
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 25 июн 2015, 01:21

Kate:search pattern?


да, хорошо, наверное больше подходит в данном случае, спасибо Kate! :)

Аватара пользователя
Algor
Маньяк
Сообщения: 1354
Зарегистрирован: 14 мар 2006, 01:38
Откуда: Самара->Ванкувер

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

Сообщение Algor » 03 июл 2015, 16:53

для строки регекспа в редакторе сработает такое
.*(, )

Аватара пользователя
Kiseta
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 29 фев 2016, 11:47

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

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

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
Графоман
Сообщения: 18706
Зарегистрирован: 20 июл 2003, 09:16
Откуда: Торонто

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

Сообщение tasko » 29 фев 2016, 12:26

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
Маньяк
Сообщения: 2077
Зарегистрирован: 06 июн 2005, 19:37
Откуда: RU - KY - NW - CQ
Контактная информация:

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

Сообщение mrskhris » 29 фев 2016, 20:56

perl -p -i.old -e 's#([A-Z])([a-z])#\n$1$2#g' ttt.txt

Аватара пользователя
Kiseta
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 29 фев 2016, 22:06

ага, спасибо всем кто ответил, все сделано (в ручную) как всегда нужно было срочно, быстрее было в ручную, слава богу не много оказалось

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

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

Сообщение Yury » 08 дек 2016, 09:54

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

https://regex101.com/#javascript

Аватара пользователя
Kiseta
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 10 июл 2018, 10:56

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

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

1,887.31 CR

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

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

-1887.31

Аватара пользователя
Kiseta
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 10 июл 2018, 11:20

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

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

1,887.31 CR

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

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

-1887.31


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

\d\,\d+\.\d+\s+CR


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

всем спасибо :D

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

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

Сообщение Leo Gan » 12 июл 2018, 20:47

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
Маньяк
Сообщения: 1754
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

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

Сообщение Leo Gan » 12 июл 2018, 21:06

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
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 12 июл 2018, 22:51

Leo Gan:
Что все это значит? В первых скобках ищется все, что заканчивается на пробел. Во вторых скобках ищется все, что начинается на двойную кавычку, потом хоть один любой символ, потом опять двойная кавычка сразу перед концом строки.
То, что находится в первых скобках обозначается в Replace, как \1 а что в вторых скобках - обозначается как \2
т.е. мы выбрасываем все, что перед последним в строке закаыченным сочетанием. Оставляем все, что в этом последнем сочетании, вместе с кавычками.

Вот! Спасибо за объяснение :up:
не просто, перефразируя библию, бананами накормить, а еще и научить их выращивать :D

Аватара пользователя
Kiseta
Графоман
Сообщения: 8108
Зарегистрирован: 22 фев 2005, 17:33
Откуда: Moscow > Chicago > Vancouver

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

Сообщение Kiseta » 12 июл 2018, 22:53

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)


Вернуться в «Программизм»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей