Find and Replace specific character in a specific string
-
Hi,
I have a text:
way 150841940
highway = residential
name = ‘Smith 120’
name:fr = ‘Simon 120’
nd 1637110349
nd 1637110360
Then I want to replace any digit in lines which have "name = " in it with another character, and I don’t want any digit in other places be replaced.
for example, I want replace 1 with X then :
name = ‘Smith 120’ --------> name = ‘Smith X20’
but name:fr = ‘Simon 120’ --------> no change
and nd 1637110349-------->no change -
Hello Saeed-Ghazi-Joolaee,
from the provided example I assume that Smith 120 is surrounded by a single quote.
Open replace dialog and check regular expression in search mode.
The regex which needs to be used is(.*name = ')(.* )(\d+)(')which should result in 4 groups
\1: name = ' \2: Smith \3: 120 \4: 'what means the replace dialog needs to be used like
Find what :(.*name = ')(.* )(\d+)(') Replace with :\1\2xxx\4which would then result in
way 150841940 highway = residential name = 'Smith xxx' name:fr = 'Simon 120' nd 1637110349 nd 1637110360Cheers
Claudia -
Thanks Claudia,
But I mean something else. I have numerouse sequence of this text block with different “names” which have different numbers in them. I want to replace “1” in all names with “X”, '2" with “Y”, and “3” with “Z” …9
way 35103881
name = ‘4/2’
nd 411824630
nd 717069654way 152126825
name = ‘2nd Street’
nd 1649547187
nd 1649547183
nd 1649547177way 191544328
name = ‘Joe 618’
nd 2021290076
nd 2021290075
nd 2021290074
nd 2021290073way 191544409
name = ‘John 13’
nd 2021290720
nd 2021290719(Excuse me for long Example)
How can I replace one by one digit with my desired letters in “name” lines. Maybe with help of Marked lines this could be done, isn’t it?
-
Hello Saeed-Ghazi-Joolaee
still having problems to understand the logic which needs to be used.
I understand only the line with name = is of interested.
Can we safely assume that the value which needs to be changed is surrounded by single quotes?
Is the first digit,which needs to be replaced, strictly mapped to a letter ?
The provided examplename = ‘4/2’ needs to be changed to something like name=‘Y/2’
and
name = ‘Joe 618’ to something like name = ‘Joe R18’Correct?
Cheers
Claudia -
Hello Claudia,
Thanks for your contribution,
Exactly, I want to replace Latin numbers with Persian numbers. For your convenience, I used here Latin letters.I must do it digit by digit, because I don’t know which numbers is used in my text (I can’t do it from 0 to 9999999999…, Thus, It’s better done digit by digit from 0 to 9). And I want only to replace numbers in name = lines not other numbers - which must be in English intact.
@ Can we safely assume that the value which needs to be changed is surrounded by single quotes?
quotes are not important at all.@ name = ‘Joe 618’ to something like name = ‘Joe R18’
Correct?
Exactly. Finally after replacing all 9 digits I want name = ‘Joe RAV’Thanks in advance.
-
Hello @Saeed-Ghazi-Joolaee
quotes are not important at all.
they are important as I use a regualr expression based on the existance of the single quotes.You need to run the regex 10 times, for each digit one run.
You build 4 groups ( ), where as group 3 is the number you are looking for
Something like(.*name = ')(.*)(8)(.*')and replace with
\1\2V\4The letter which is used as replacement is between group \2 and \4 without spaces.
I hope this does what you are looking for.
Cheers
Claudia -
Hi Claudia,
Thanks for your kind help. I almost reached my destination. The only thing is that for numbers which have equal digits like 33 or 333 I must search two or three times to complete my replacement. As far as my numbers are maximum 3 digit numbers, this in no matter.
Cheers.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login