How to replace a dash with space within a word and not change after
-
Have searched and just find the opposite.
I am using replace files, have a series of files in a folder:
Can look like this, some variants:
ABB.ST,2023-08-01,421.2,423.6,416.8,416.8,505368
(No change)
Result needed
ABB,2023-08-01,421.2,423.6,416.8,416.8,505368
ASSA-B.ST,2023-08-01,253,254.6,251.7,253.3,753197
result needed
ASSA B,2023-08-01,253,254.6,251.7,253.3,753197
ACQ-SPAC.ST,2023-08-01,100.4,100.4,100,100.2,2119
result needed
ACQ SPAC,2023-08-01,100.4,100.4,100,100.2,2119
Can it be done in one go or do I need to use alternates.
for .ST .CO .HE .OL i have used
(.ST\>) | (.CO\>) | (.HE\>)| (.OL\>)
and replace with()()()()
Thanks in advance
Best regards
Stefan—
moderator added code markdown around text; please don’t forget to use the
</>
button to mark example text as “code” so that characters don’t get changed by the forum -
I used moderator powers to edit your post so that we can better see/understand the data (please remember to format future posts – the backslash before your
>
got lost when you posted, as the PREVIEW window should have made obvious to you).But even after that, I’m not sure I’ve completely understood your needs, because your replacement seems to have nothing to do with your title. You originally said “how to replace a dash with a space within a word and not change after”, but what you demonstrated you wanted was “replace a hyphen with a space and then delete the period and some characters after as well”.
For the sake of the answer, I am going to assume that
- You only want to do this search on the first “word” in a given line
- There are no leading spaces before the first “word” on a given line
- You want to look for a pattern like
X-Y.Z,
and replace it withX Y
- You don’t have any special needs as to the number of characters in each of the X and Y and Z positions.
If these assumptions aren’t valid, then you need to show some more counter examples (using the recommended forum formatting) or I will not be able to provide any more suggestions.
FIND =
^(\w+)-(\w+)\.(\w+)\>
REPLACE =$1 $2
SEARCH MODE = Regular ExpressionExplanation:
^
= start at beginning of line(\w+)
= find 1 or more alphanumeric characters and put them in group#1-
= find a hyphen(\w+)
= find 1 or more alphanumeric characters and put them in group#2\.
= match a literal dot (in regex,.
by itself means match any single character, so your.ST\>
would have matched at the end ofNOT_THE_BEST,
– which I don’t think is what you wanted)(\w+)\>
put the word after the dot until the end of the word into group#3- Replacement just replaces with group#1 contents, then a literal space, then group#2 contents.
Good luck.
----
Useful References
-
@PeterJones
Hi Peter,That worked fine for all the tricky ones. (-:
undefined
ABB.ST,2023-08-01,421.2,423.6,416.8,416.8,505368 remained the same
wanted result
ABB,2023-08-01,421.2,423.6,416.8,416.8,505368 come in 3 variants but guess they will be handled
by the same logic. Here no dash -BAVA.CO,2023-08-01,421.2,423.6,416.8,416.8,505368
ORNBV.HE,2023-08-01,421.2,423.6,416.8,416.8,505368
KOG.OL,2023-08-01,421.2,423.6,416.8,416.8,505368undefined
Thanks for your assistance.
BR Stefan
-
@PeterJones said in How to replace a dash with space within a word and not change after:
or the sake of the answer, I am going to assume that
You only want to do this search on the first “word” in a given line - Correct
There are no leading spaces before the first “word” on a given line - No
You want to look for a pattern like X-Y.Z, and replace it with X Y - Can be KOG.OL replace KOG or ALK-B.CO replace ALK B
You don’t have any special needs as to the number of characters in each of the X and Y and Z positions. No it can be from 2- say 10 -
There are no leading spaces before the first “word” on a given line - No
^\h*
instead of just^
in the regex above will allow 0 or more spaces at the beginning of the lineYou want to look for a pattern like
X-Y.Z
, and replace it withX Y
- Can be KOG.OL replace KOG or ALK-B.CO replace ALK BSince I explained all the pieces of the search regex, I am going to hope you are able to figure out how to delete the hyphen and the second group in the search, and remove the space and $2 from the replacement, so that you can run a second regex to catch those outliers. Because you need to learn by doing. And it’s a pretty easy simplification of the regex I already wrote for you. (it could be made more complicated, to handle both conditions in a single replacement, but it makes it harder to understand, and if two easier regex will do, I see no reason to combine them into one complicated regex)
-
@PeterJones said in How to replace a dash with space within a word and not change after:
Can be KOG.OL replace KOG or ALK-B.CO replace ALK B
No they can never replace in that direction.
only from KOG.OL to KOG or ALK-B.CO replace ALK B
Thanks I am learning.
Best regards
Stefan
-
@Kingfisher
Here is my solution ending up with 2 expressionsundefined
^(\w+)-(\w+).(\w+)>
$1 $2^(\w+).(\w+)>
$1$3undefined
And then I bundble them in a macro with a hot key.
Thanks for your help!