I need to replace some numbers....
-
Hi guys, I need to replace some numbers: specifically I need to replace the 6 digit bold numbers with 6 ZEROES only at the SPECIFIC lines: (lines that begin with “Vertex”)
The random 6 digit bold numbers appear randomly ONLY after the “.”
They are always 6 digit and always random.
Put in other words: I need to make sure that on every line that begins with “Vertex” after the DOT I have 6 ZEROES. Always.
Thanx in advance!Begin PolyList
Begin Polygon
Origin -00128.000000,-00128.000000,-00128.000000
Normal -00001.000000,+00000.000000,+00000.000000
TextureU +00000.000000,+00001.000000,+00000.000000
TextureV +00000.000000,+00000.000000,-00001.000000
Vertex -00128.768546,-00128.000000,-00128.766453
Vertex -00128.000000,-00128.000000,+00128.000000
Vertex -00128.000000,+00131.756453,+00128.000000
Vertex -00128.000000,+00131.000000,-00128.000000
End Polygon -
find what:
^Vertex.*\.\K(?!0{6})(\d{6})
replace with:000000
Note, because of the \K usage you need to press replace all, replace doesn’T work in this case and you need to keep press replace all unless you receive that
nothing was replaced anymore.If you want to learn more about the regex checkout the NEW NPP MANUAL SITE.
-
Hi, thank you but its not working because I made a mistake and skipped some spaces:
This is how the line (a single line for example only) looks:
Vertex +02096.560547,+00774.871582,+00078.723633
There are 3 spaces after the word “Vertex” that somehow disappeared.
-
They disappeared because this forum uses Markdown syntax in posts. If you want to show data without markdown messing with it, do a line like this before and after your data:
~~~
Thus:
~~~
hello there
~~~
will look like this when posting:
hello there
-
Can someone give me a working solution? The one posted by @Ekopalypse does not work.
-
@John-McDoe said:
The one posted by @Ekopalypse does not work.
Maybe not. But it’s an excellent starting point. You could choose to study the docs (see below, and the link Eko posted), and then try to modify @Ekopalypse’s regex to fit your needs. If you cannot get it to work, you can show us what you tried (and why you think that should have worked), what you got, and what you expect.
Show some effort, and you’ll get lots of help. Don’t show any effort, and you’ll probably eventually get the answer anyway, but will have to wait longer, and will probably use up any free goodwill you may have started with.
-----
Please Read And Understand The Following
FYI:
This forum is formatted using Markdown, with a help link buried on the little grey
?
in the COMPOSE window/pane when writing your post. For more about how to use Markdown in this forum, please see @Scott-Sumner’s post in the “how to markdown code on this forum” topic, and my updates near the end. It is very important that you use these formatting tips – using single backtick marks around small snippets, and using code-quoting for pasting multiple lines from your example data files – because otherwise, the forum will change normal quotes (""
) to curly “smart” quotes (“”
), will change hyphens to dashes, will sometimes hide asterisks (or if your text isc:\folder\*.txt
, it will show up asc:\folder*.txt
, missing the backslash). If you want to clearly communicate your text data to us, you need to properly format it. That topic also explains how to embed images by uploading them to a public server like imgur.com, and embedding them using the syntax![](http://i.imgur.com/QTHZysa.png)
If you have further search-and-replace (“matching”, “marking”, “bookmarking”, regular expression, “regex”) needs, study this FAQ and the documentation it points to, especially this. Before asking a new regex question, understand that for future requests, many of us will expect you to show what data you have (exactly), what data you want (exactly), what regex you already tried (to show that you’re showing effort), why you thought that regex would work (to prove it wasn’t just something randomly typed), and what data you’re getting with an explanation of why that result is wrong. When you show that effort, you’ll see us bend over backward to get things working for you. If you need help formatting, see the paragraph above.
Please note that for all regex and related queries, it is best if you are explicit about what needs to match, and what shouldn’t match, and have multiple examples of both in your example dataset. Often, what shouldn’t match helps define the regular expression as much or more than what should match.
-
@John-McDoe said:
Can someone give me a working solution?
Can you post some data that you are sure is correct? People tend to lose interest after a few posts where people can’t do this…
-
HI again. I did everything that @Ekopalypse said correct. I tripple checked everything.
In the end, I did a macro, that does the job for me, it worked, but I’d like to be able to do it using the way he described too.
I have given all the information that is required in my previous post, just note that after “Vertex” there are always 3 spaces, not 1.
-
@John-McDoe said:
I have given all the information that is required in my previous post
Where “all the information” doesn’t including showing exactly what you tried (you make us do the work of “three spaces” because you have shown yourself unwilling to follow simple instructions for quoting exact text), doesn’t include showing us what you got when you tried it, doesn’t include showing why you think the result was wrong. That seems like “I have given you the bare minimum of information, which isn’t actually enough to solve my problem, and then blame you when the free help doesn’t work exactly the way I want it to”.
If that’s how you want to come across, leave things as they are. If you want to come across as someone who is willing to learn, and who is willing to make an effort, and who wants help rather than just demanding a solution, I would suggest adding information and rephrasing things.
-
But at this point, I’m not sure I want to run the risk of you blaming us anymore for your problem. Hopefully this post will show you what happened.
When I started with
Begin PolyList Begin Polygon Origin -00128.000000,-00128.000000,-00128.000000 Normal -00001.000000,+00000.000000,+00000.000000 TextureU +00000.000000,+00001.000000,+00000.000000 TextureV +00000.000000,+00000.000000,-00001.000000 Vertex -00128.768546,-00128.000000,-00128.766453 Vertex -00128.000000,-00128.000000,+00128.000000 Vertex -00128.000000,+00131.756453,+00128.000000 Vertex -00128.000000,+00131.000000,-00128.000000 End Polygon
with your three pesky spaces (or without, because it doesn’t affect the regex at all), and run @ekopalypse’s regex once with REPLACE ALL, it fixes two of the three instances:
Begin PolyList Begin Polygon Origin -00128.000000,-00128.000000,-00128.000000 Normal -00001.000000,+00000.000000,+00000.000000 TextureU +00000.000000,+00001.000000,+00000.000000 TextureV +00000.000000,+00000.000000,-00001.000000 Vertex -00128.768546,-00128.000000,-00128.000000 Vertex -00128.000000,-00128.000000,+00128.000000 Vertex -00128.000000,+00131.000000,+00128.000000 Vertex -00128.000000,+00131.000000,-00128.000000 End Polygon
Then I run it a second time, and it fixes the third instance.
Begin PolyList Begin Polygon Origin -00128.000000,-00128.000000,-00128.000000 Normal -00001.000000,+00000.000000,+00000.000000 TextureU +00000.000000,+00001.000000,+00000.000000 TextureV +00000.000000,+00000.000000,-00001.000000 Vertex -00128.000000,-00128.000000,-00128.000000 Vertex -00128.000000,-00128.000000,+00128.000000 Vertex -00128.000000,+00131.000000,+00128.000000 Vertex -00128.000000,+00131.000000,-00128.000000 End Polygon
The reasons this happens is because of the way the regex engine works inside of Notepad++: The first match found the start of the line, followed by Vertex, followed by as many characters as it could, until it hit the literal period that wasn’t before 6 zeroes. That means in
-00128.768546,-00128.000000,-00128.766453
that it gobbled up all the characters until it found766453
(the second set of non-zero decimal-fraction digits)… that’s then the fraction that it replaced with000000
on that row. But at that point, the search cursor had moved beyond that line, so it didn’t see that the line still matches the regex. Hence it left that line asVertex -00128.768546,-00128.000000,-00128.000000
When you run the regex a second time, it gets rid of the second match earlier in the line.
If @Ekopalypse had used a non-greedy regex
^Vertex.*?\.\K(?!0{6})(\d{6})
(the extra?
makes it non-greedy), then it would have fixed the768546
on the first run of the regex, and766453
on the second.Either way, just run the regex more than once, and it will work for you. If there are three numbers possible on each line (and given “polygon” and “vertex”, I am assuming that those are 3d coordinates, so three seems a reasonable max-per-line), then you should only have to run the regex a maximum of 3 times to get all the replacements done.