• 0 Votes
    13 Posts
    662 Views
    guy038G

    Hi, @alan-kilborn and All,

    I really should have thought a bit more, before answering ! Indeed, Alan, although the bookmarks are kept in the session.xml configuration file, there are not stored in files themselves. So, as soon as a file containing bookmarks is closed, these bookmarks are gone away the next time the file is opened, during a new N++ session !

    Sorry for all that noise !

    Cheers,

    guy038

  • Ubuntu ctrl+tab behaviour

    3
    0 Votes
    3 Posts
    380 Views
    Bill NealB

    @PeterJones Thank you Peter. You’re right, I’m running it using WINE. I also use N++ on Windows. I’ve never seen the behaviour I described above on Windows. Apart from this issue, it’s working really well on Ubuntu, and I’m very grateful that it does : )

  • Need to find string if don't have any tags

    4
    0 Votes
    4 Posts
    481 Views
    guy038G

    Hi, @ganesan-govindarajan and All,

    Ah…OK. So, whatever the contents of tags, isn’t it ?

    Then the following generic regex should work nice !

    SEARCH (?-i)<(\w+)>(?2)</\1>(*SKIP)(*F)|(\QWhatever you want\E)

    Note that the part between the \Q ( for Quote ) and \E ( for End ) is just considered as a literal range of characters !

    So, in case of a very simple text to search as, for instance, My text the \Q and \E syntaxes are not necessary and you may use this practical regex :

    SEARCH (?-i)<(\w+)>(?2)</\1>(*SKIP)(*F)|(My text)

    When tested against the text, below :

    01 <para>My text</para> 02 <blockquote>My text <!-- MISSING tag --> 03 <abc>My text</xyz> <!-- NON-regular syntax --> 04 My text <!-- MISSING tags --> 05 <ganesan>My text</ganesan> 06 <123>My text<456> <!-- NON-regular syntax --> 07 My text</blockquote> <!-- MISSING tags --> 08 <h1>My text</h1> 09 (toto)My text(/toto) <!-- NON-regular syntax --> 10 (Test)My text[/test] <!-- NON-regular syntax -->

    it would match the string My text, only in case of non-regular syntax or missing tag. So, in lines 02, 03, 04, 06, 07, 09 and 10 !

    Similarly, if you’re looking for wrong syntaxes of the This is a Notepad++ regex. sentence, it’s better to use the syntax, below, as the text, to search for, contains the + and the . signs, which are regex symbols with a special meaning :

    SEARCH (?-i)<(\w+)>(?2)</\1>(*SKIP)(*F)|(\QThis is a Notepad++ regex.\E)

    Test it against this similar sample :

    01 <para>This is a Notepad++ regex.</para> 02 <blockquote>This is a Notepad++ regex. <!-- MISSING tag --> 03 <abc>This is a Notepad++ regex.</xyz> <!-- NON-regular syntax --> 04 This is a Notepad++ regex. <!-- MISSING tags --> 05 <ganesan>This is a Notepad++ regex.</ganesan> 06 <123>This is a Notepad++ regex.<456> <!-- NON-regular syntax --> 07 This is a Notepad++ regex.</blockquote> <!-- MISSING tags --> 08 <h1>This is a Notepad++ regex.</h1> 09 (toto)This is a Notepad++ regex.(/toto) <!-- NON-regular syntax --> 10 (Test)This is a Notepad++ regex.[/test] <!-- NON-regular syntax -->

    Best Regards,

    guy038

  • 0 Votes
    12 Posts
    613 Views
    Robin CruiseR

    super answer, thank you sir @guy038

  • The Font Changes Suddenly

    3
    0 Votes
    3 Posts
    496 Views
    Olan KnightO

    @Ekopalypse
    Yes, I am editing SQL. Thank you for your suggestion, I will try it!

  • nosession behavior

    3
    0 Votes
    3 Posts
    345 Views
    PeterJonesP

    @PeterJones said in nosession behavior:

    Your description sounds a lot like [issue #9487[(https://github.com/notepad-plus-plus/notepad-plus-plus/issues/9487),

    I have added my observations and Debug Info to that issue.

    If your Debug Info is different, it would be good to add yours as well.

  • Change number size

    2
    0 Votes
    2 Posts
    1k Views
    PeterJonesP

    @Hüseyin-Bıçkın ,

    If you just want to truncate, and it’s always starting with 3-or-more digits after the decimal point, then it’s relatively easy:

    To make sure you’re counting from the decimal point, we’re going to use \. to get the literal decimal point (because regex uses . to match any character.

    The next important item is the “capture group” using parentheses (...), so that whatever is inside gets saved into memory. In the replacement, use ${1} to use the value from the first capture group, ${2} for the second, and so on…

    The third important item is using * to indicate “0 or more of the previous token”.

    These three concepts are sufficient for your task:

    Find = (\.[0-9][0-9][0-9])[0-9]*(in) this finds a literal . followed by 3 digits, then 0 or more digits then the literal in, storing the decimal and three digits into group#1 and the in into group 2 (not necessary, but good practice). Replace = ${1}${2} the first group contained the decimal and 3 digits; the second group contained the in, so this means the decimal, three digits, and in.

    However, using the “quantity modifier” aka “multiplying operator”" {ℕ} allows you to have ℕ matches of whatever token or subset comes before, which simplifies your FIND expression to

    Find = (\.[0-9]{3})[0-9]*(in)

    To simplify again, there is a character escape sequence \d which is basically equivalent to [0-9] for your purposes.

    Find = (\.\d{3})\d*(in)

    If you want to do true rounding (if the 4th digit is 5 or higher, add 1, else just truncate), there is no universal regex that will do it; depending on your number of digits, you can craft a regex that will do it, but there is so much to keep track of that you don’t want to do it in regex. If you need rounding, it’s much better to do it in a scripting language like PythonScript: see “Batch Decimal Rounding” discussion and a oneliner PythonScript in the “Rounding numbers pythonscript …” discussion for some solutions.

    ----

    Do you want regex search/replace help? Then please be patient and polite, show some effort, and be willing to learn; answer questions and requests for clarification that are made of you. All example text should be marked as literal text using the </> toolbar button or manual Markdown syntax. To make regex in red (and so they keep their special characters like *), use backticks, like `^.*?blah.*?\z`. Screenshots can be pasted from the clipboard to your post using Ctrl+V to show graphical items, but any text should be included as literal text in your post so we can easily copy/paste your data. Show the data you have and the text you want to get from that data; include examples of things that should match and be transformed, and things that don’t match and should be left alone; show edge cases and make sure you examples are as varied as your real data. Show the regex you already tried, and why you thought it should work; tell us what’s wrong with what you do get. Read the official NPP Searching / Regex docs and the forum’s Regular Expression FAQ. If you follow these guidelines, you’re much more likely to get helpful replies that solve your problem in the shortest number of tries.

  • Combine 2 texts line by line

    17
    0 Votes
    17 Posts
    22k Views
    Muppi KarthickM

    @guy038 said in Combine 2 texts line by line:

    (?s)

    thanks for such a valuable post. its working for me. how to merge 3 files.

  • Exact search instead of «fuzzy search»

    2
    0 Votes
    2 Posts
    343 Views
    dinkumoilD

    @Christof-Rimle

    This is a frequently upcoming issue, for example see >> my comment in another thread <<.

    You should not expect that this behaviour will change in the future as it derives from Scintilla, the underlying edit component Notepad++ uses, which in turn applies an algorithm called Case Folding that is part of the Unicode standard when it performs a case insensitive search operation.

    The only way to get “exact” search results like you want them is to use case sensitive search (check option “Groß-/Kleinschreibung beachten”) because this prevents Scintilla from applying Case Folding.

  • Regex - fiename as parameter in search replace

    3
    0 Votes
    3 Posts
    181 Views
    Terry RT

    @RaniRani said in Regex - fiename as parameter in search replace:

    How do I do fetch the filename using regex across all site?

    I’m not sure I fully understand what you want to do however I provided a solution in this post which dealt with getting the filename of each opened file in Notepad++, saving it within the file and closing the file.

    Then a regex was used to update each file by copying that filename to selected (actually all) lines within the file. As @Alan-Kilborn stated the filename isn’t available to regex as a variable you can call on, but my first step was just a macro recording the use of menu options which then allowed a regex to complete the process.

    So take a look and see if maybe it might help. Reply back to this post if you think this can help you and you need a bit of extra help.

    I’m not on a PC currently otherwise I might have provided some more details.

    Terry

  • Regex: Find and Delete duplicate apostrophe on a html tag

    10
    0 Votes
    10 Posts
    622 Views
    Robin CruiseR

    super answer, @guy038 Thanks

  • Associate Notepad++ with .txt .log etc

    5
    1 Votes
    5 Posts
    3k Views
    Mick DawdyM

    I missed one of the options. I should have waited a day, settled down, and went at it again. Anyway, all’s good now. Thank you for the patient help :)

  • Reorder XML with Python script

    2
    0 Votes
    2 Posts
    211 Views
    EkopalypseE

    @Mark-McCall

    may I ask you what exactly you are trying to solve?
    Is it about being sure to always have a standardized xml file?
    If so, have you considered using xslt instead?
    Or do you need a generic way to reorder the tags based on your current requirements?

  • Highlighting characters based on character count

    2
    1 Votes
    2 Posts
    431 Views
    Alan KilbornA

    @Ken-aRf

    While it doesn’t highlight the character itself, I would suggest using the vertical edge feature:

    5772c6e2-7374-4588-a0bb-30035efab919-image.png

    This forms a nice “bracketing” of the columns you are interested in.

  • Plugins and Plugins Admin panel gone after update to 7.9.5

    2
    0 Votes
    2 Posts
    5k Views
    PeterJonesP

    @Ignus666 ,

    As always, showing your ?-menu Debug Info will help.

    I am assuming you used the “installer” rather than the “portable”. If this is wrong, this advice won’t work exactly as written.

    The Plugins Admin tool does ship with Notepad++ v7.9.5, so something went wrong with your installation.

    I don’t know why it wouldn’t have been installed properly, but the only way I could reproduce your problem was to get rid of the <installdir>\Plugins\Config\nppPluginList.dll (or more drastically, remove its whole containing folder – probably c:\Program Files\Notepad++\Plugins\Config\nppPluginList.dll, but it depends on 32/64-bit and whether you changed the default location.)

    If you use the normal installer, I think the easiest way to get it back would be to re-install. Make sure you get the installer from the official https://notepad-plus-plus.org/downloads/v7.9.5/ location – do not trust whatever downloader you currently have, because it messed up.

    If reinstalling from the official installer doesn’t work, the ?-menu Debug Info will give you the path for the Notepad++ executable. Go into its folder. Make sure plugins exists; make sure plugins\Config exists. If so, then download the appropriate portable version (either 32bit or 64bit, to match your normal installer bit-value), and unzip the nppPluginList.dll into the location mentioned earlier.

  • Left Gutter / Space at the begginning of a line / SCI code 2155

    7
    0 Votes
    7 Posts
    543 Views
    Adam WestA

    @PeterJones
    @Alan-Kilborn
    @dinkumoil

    Thank you all for the very detailed information and explanation of why it doesn’t work anymore. I wasn’t expecting so much.
    np++ is the best editor I’ve used in my 20 years as a PeopleSoft developer. I look forward to the left-padding setting, but will give startup.py a shot for now.
    -Adam

  • How can I change all the words in a given structure?

    29
    0 Votes
    29 Posts
    2k Views
    guy038G

    Hello, @darkenb, @alan-kilborn, @peterjones, @ekopalypse and All,

    @darkenb :

    Regarding the B and D regex S/R, note that I didn’t explain fully how they work. I do think that you need to learn basic regex concepts first, before trying to understand these complicated syntaxes which would just confuse you ;-)

    To All,

    Regarding the A and C regex S/R, they can be simplified and we do not need to use conditional regexes ! Indeed :

    Regex S/R A :

    SEARCH (\x5b)|(\x5d)

    REPLACE \1_\2

    Regex S/R C :

    SEARCH (\x5b)_|_(\x5d)

    REPLACE \1\2

    As you can see, the opening square bracket \x5b is stored as group 1 and the ending square bracket \x5d is stored as group 2. And, as the two alternatives are mutually exclusive, we can write, both, \1 and \2 in the replacement zone ( or $1 and $2 ). We know that when one is defined, the other one is undefined and equivalent to an empty string ;-))

    Best Regards,

    guy038

  • XML Pretty Print and HTML

    14
    0 Votes
    14 Posts
    19k Views
    Frustrated SurferF

    @Adriano-Ellero How has your experience been with the Tidy2 solution since you posted Nov 11, 2020? I’ve integrated cmd line Tidy into my process and have no complaints about the output, just that it’s another set of chicanes between me and the finish line. Your initial assessment of the plugin had a caveat.

  • Intracacies of NPP Regex negative lookahead

    8
    0 Votes
    8 Posts
    666 Views
    guy038G

    Hi, @alan-kilborn,

    Regarding the regex syntax 1{2, this is considered as a pure literal expression, which correctly matches the 1{2 string

    But if you want to match the literal string 1{2}, as this syntax has the regex meaning : “two consecutive digits” 1, we need to escape the opening brace, {, only ( so 1\{2}1\{2} ) to get a literal expression !

    As defined here

    All characters are treated as literals, except for characters $, \, (, ), ?, and :

    If you want to write the $ ? and the : characters, literally, you do not need, most of the time, to escape them because they are usually found outside their meaning context !

    However, the three characters (, ) and \ must always be escaped, in the replacement zone, in order to be written literally !

    Parentheses are normally used for lexical grouping in conditional expressions, with these syntaxes :

    (?DigitTrue_Exp) or (?{Digit}True_Exp) or (?NameTrue_Exp)

    (?DigitTrue_Exp:False_Exp) or (?{Digit}True_Exp:False_Exp) or (?NameTrue_Exp:False_Exp)

    Apart from these cases, these two parentheses seem to just represent a pure empty string !

    For instance :

    SEARCH DEF

    REPLACE 123(456 or REPLACE 123()456

    would change the string ABCDEFGHI into ABC123456GHI

    And the S/R :

    SEARCH : DEF REPLACE : 123( (((XYZ)OP(QRS)TUV ()) )789 would change the string "ABCDEFGHI" into "ABC123 XYZOPQRSTUV 789GHI"

    Thus, the S/R :

    SEARCH DEF

    REPLACE ()

    would change the string ABCDEFGHI into ABCGHI ! In other words, the () syntax, in the replacement zone, seems to be a synonym of an empty string ;-)

    However, note that :

    SEARCH DEF

    REPLACE 123)456 or REPLACE 123)456(789

    would change the string ABCDEFGHI into ABC123GHI only !

    Now, placing some replacement meta-characters, inside parentheses, does not make them literal and they keep these normal behavior :

    For instance, the regex S/R :

    SEARCH (DEF)|XYZ

    REPLACE ---(123(?1TRUE:FALSE)456\\789)---

    would change the string ABCDEFGHI ABCXYZGHI into ABC---123TRUE456\789---GHI ABC---123FALSE456\789---GHI

    Finally, the only practical application I found of using parentheses, is when you want to delimit a string beginning and/or ending with space characters !

    Best Regards,

    guy038

  • Change location of the forward slash in every row containing 1 NAME

    5
    0 Votes
    5 Posts
    2k Views
    HVNFH

    Thank you very much!
    I used your last resolution: Find: (?-s)^1 NAME.*\K/((?:\S+\h+)) and replace with $1/
    it worked perfect!

    For people searching for this, i used it for batch editing a raw gedcom com familytree file.
    In older familytree software the firstname patronym and surname was noted differently so in a modern gedcom file the patronym would end op in the surname field.
    using notepad++ you can edit the raw gedcom file and with find and replace you can move the slash from the patronym to the surname.
    In this case it was a lifework from an old geneologist of 170.000 persons in a gedcom which was almost obsolete if this was not solved.
    Peter Jones thank you very much.