Replace character with another only if repeated and not part of a wordOnly match word outside a HTML statement with a regex“ReplaceWith” & - but only part of itRegExp regular expression find & replace whole words onlyJava regex - parts of wordsRegex match word groups and parts of previously matched word groupsWord replacement using regex if the target word is not a part of another wordreplace after “word” character by character in notepad ++?Why does `word (.(?!another-word))*?` match only a character?Replacing consecutive repeated characters in javareplacing part of a string but the part is very long

Flow chart document symbol

I'm in charge of equipment buying but no one's ever happy with what I choose. How to fix this?

Go Pregnant or Go Home

What does 算不上 mean in 算不上太美好的日子?

Customer Requests (Sometimes) Drive Me Bonkers!

Is this apparent Class Action settlement a spam message?

Escape a backup date in a file name

Sort a list by elements of another list

How easy is it to start Magic from scratch?

Would a high gravity rocky planet be guaranteed to have an atmosphere?

Sequence of Tenses: Translating the subjunctive

Is expanding the research of a group into machine learning as a PhD student risky?

How do we know the LHC results are robust?

What is paid subscription needed for in Mortal Kombat 11?

Where does the Z80 processor start executing from?

How long to clear the 'suck zone' of a turbofan after start is initiated?

Implement the Thanos sorting algorithm

Is there a problem with hiding "forgot password" until it's needed?

Is a stroke of luck acceptable after a series of unfavorable events?

How did Doctor Strange see the winning outcome in Avengers: Infinity War?

How to Reset Passwords on Multiple Websites Easily?

What is the best translation for "slot" in the context of multiplayer video games?

What does "I’d sit this one out, Cap," imply or mean in the context?

What happens if you roll doubles 3 times then land on "Go to jail?"



Replace character with another only if repeated and not part of a word


Only match word outside a HTML statement with a regex“ReplaceWith” & - but only part of itRegExp regular expression find & replace whole words onlyJava regex - parts of wordsRegex match word groups and parts of previously matched word groupsWord replacement using regex if the target word is not a part of another wordreplace after “word” character by character in notepad ++?Why does `word (.(?!another-word))*?` match only a character?Replacing consecutive repeated characters in javareplacing part of a string but the part is very long













6















In Python3, the following code works to replace a string (two or more) of *'s with x's.



import re
re.sub(r'*(?=*)|(?<=*)*', 'x', 'Replace this *** but not this *')
# 'Replace this xxx but not this *'


But what if I also want to exempt a string of *'s that are part of a "word" like the following? (I.e. the string is attached to one or more [a-zA-Z] characters.)



text = "Don't replace foo*** or **bar, either."
# unmodified text expected


How do I do this? I can probably match the exempted cases as well and use a replacement function to deal with them, but is there a better way?










share|improve this question




























    6















    In Python3, the following code works to replace a string (two or more) of *'s with x's.



    import re
    re.sub(r'*(?=*)|(?<=*)*', 'x', 'Replace this *** but not this *')
    # 'Replace this xxx but not this *'


    But what if I also want to exempt a string of *'s that are part of a "word" like the following? (I.e. the string is attached to one or more [a-zA-Z] characters.)



    text = "Don't replace foo*** or **bar, either."
    # unmodified text expected


    How do I do this? I can probably match the exempted cases as well and use a replacement function to deal with them, but is there a better way?










    share|improve this question


























      6












      6








      6








      In Python3, the following code works to replace a string (two or more) of *'s with x's.



      import re
      re.sub(r'*(?=*)|(?<=*)*', 'x', 'Replace this *** but not this *')
      # 'Replace this xxx but not this *'


      But what if I also want to exempt a string of *'s that are part of a "word" like the following? (I.e. the string is attached to one or more [a-zA-Z] characters.)



      text = "Don't replace foo*** or **bar, either."
      # unmodified text expected


      How do I do this? I can probably match the exempted cases as well and use a replacement function to deal with them, but is there a better way?










      share|improve this question
















      In Python3, the following code works to replace a string (two or more) of *'s with x's.



      import re
      re.sub(r'*(?=*)|(?<=*)*', 'x', 'Replace this *** but not this *')
      # 'Replace this xxx but not this *'


      But what if I also want to exempt a string of *'s that are part of a "word" like the following? (I.e. the string is attached to one or more [a-zA-Z] characters.)



      text = "Don't replace foo*** or **bar, either."
      # unmodified text expected


      How do I do this? I can probably match the exempted cases as well and use a replacement function to deal with them, but is there a better way?







      python regex python-3.x






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 3 hours ago









      0m3r

      8,02292554




      8,02292554










      asked 4 hours ago









      bongbangbongbang

      607720




      607720






















          2 Answers
          2






          active

          oldest

          votes


















          7














          regex = r"s*2,[sn]"


          This matches 2 or more * chars, surrounded by whitespace (or ended with a newline)



          Call it maybe like this?



          regex = r"s*2,[sn]"


          def replacer(match):
          return 'x' * len(match.group())

          re.sub(regex, replacer, your_string_here)





          share|improve this answer























          • You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

            – bongbang
            3 hours ago



















          0














          This answer is inspired Danielle M.'s. This pattern below seems to give me what I want. The rest is the same as hers.



          regex = r'(?<![a-zA-Z])*2,(?![a-zA-Z])'





          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55389122%2freplace-character-with-another-only-if-repeated-and-not-part-of-a-word%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            7














            regex = r"s*2,[sn]"


            This matches 2 or more * chars, surrounded by whitespace (or ended with a newline)



            Call it maybe like this?



            regex = r"s*2,[sn]"


            def replacer(match):
            return 'x' * len(match.group())

            re.sub(regex, replacer, your_string_here)





            share|improve this answer























            • You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

              – bongbang
              3 hours ago
















            7














            regex = r"s*2,[sn]"


            This matches 2 or more * chars, surrounded by whitespace (or ended with a newline)



            Call it maybe like this?



            regex = r"s*2,[sn]"


            def replacer(match):
            return 'x' * len(match.group())

            re.sub(regex, replacer, your_string_here)





            share|improve this answer























            • You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

              – bongbang
              3 hours ago














            7












            7








            7







            regex = r"s*2,[sn]"


            This matches 2 or more * chars, surrounded by whitespace (or ended with a newline)



            Call it maybe like this?



            regex = r"s*2,[sn]"


            def replacer(match):
            return 'x' * len(match.group())

            re.sub(regex, replacer, your_string_here)





            share|improve this answer













            regex = r"s*2,[sn]"


            This matches 2 or more * chars, surrounded by whitespace (or ended with a newline)



            Call it maybe like this?



            regex = r"s*2,[sn]"


            def replacer(match):
            return 'x' * len(match.group())

            re.sub(regex, replacer, your_string_here)






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 3 hours ago









            Danielle M.Danielle M.

            2,2051623




            2,2051623












            • You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

              – bongbang
              3 hours ago


















            • You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

              – bongbang
              3 hours ago

















            You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

            – bongbang
            3 hours ago






            You gave me a good idea for the use of the replacer function, but your pattern, by including the spaces in the match, would seem to turn this **** string into this******string, which is not I want. It would also not replace **** this string, which I do want to replace. That said, I now have a solution that works thanks to you. Thank you.

            – bongbang
            3 hours ago














            0














            This answer is inspired Danielle M.'s. This pattern below seems to give me what I want. The rest is the same as hers.



            regex = r'(?<![a-zA-Z])*2,(?![a-zA-Z])'





            share|improve this answer



























              0














              This answer is inspired Danielle M.'s. This pattern below seems to give me what I want. The rest is the same as hers.



              regex = r'(?<![a-zA-Z])*2,(?![a-zA-Z])'





              share|improve this answer

























                0












                0








                0







                This answer is inspired Danielle M.'s. This pattern below seems to give me what I want. The rest is the same as hers.



                regex = r'(?<![a-zA-Z])*2,(?![a-zA-Z])'





                share|improve this answer













                This answer is inspired Danielle M.'s. This pattern below seems to give me what I want. The rest is the same as hers.



                regex = r'(?<![a-zA-Z])*2,(?![a-zA-Z])'






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 3 hours ago









                bongbangbongbang

                607720




                607720



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55389122%2freplace-character-with-another-only-if-repeated-and-not-part-of-a-word%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Are there any comparative studies done between Ashtavakra Gita and Buddhim?How is it wrong to believe that a self exists, or that it doesn't?Can you criticise or improve Ven. Bodhi's description of MahayanaWas the doctrine of 'Anatta', accepted as doctrine by modern Buddhism, actually taught by the Buddha?Relationship between Buddhism, Hinduism and Yoga?Comparison of Nirvana, Tao and Brahman/AtmaIs there a distinction between “ego identity” and “craving/hating”?Are there many differences between Taoism and Buddhism?Loss of “faith” in buddhismSimilarity between creation in Abrahamic religions and beginning of life in Earth mentioned Agganna Sutta?Are there studies about the difference between meditating in the morning versus in the evening?Can one follow Hinduism and Buddhism at the same time?Are there any prohibitions on participating in other religion's practices?Psychology of 'flow'

                    What to do with chalk when deepwater soloing? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Photo Competition: April - At Home in The Great OutdoorsIs it ok for my climbing shoes/chalk bag to get wet?What hand and finger exercises help with climbing?Chalk: pure, plus drying agent, liquid?What can I do with a retired rope and harness?What to do with the lap coiled rope if the belayer wishes to lead consecutive pitches?How do to a safety knot when abseiling with 2 ropes?What are the advantages of being short when climbing?When should you start to train with Campus Boards, Hang Boards and Peg Boards?Climbing: fear/panic on boulder wallWith what specific techniques are various bouldering grades associated?What are the most important numerical features to look for when comparing climbing ropes?

                    How to start Thunderbird minimized on start-up?How to run Thunderbird on startup, minimised?How to make Thunderbird Mail runs at startup?How do I start applications automatically on login?How can I delay a specific program on startup?How do I hide Thunderbird from the launcher while running?How to keep Thunderbird and Pidgin running on background?How to open Thunderbird minimised at startup in Ubuntu 16.04How to start Thunderbird minimized to Unity system tray on start-up?Minimize Thunderbird to Traythunderbird script to disable option: “delete message on server”Why is Thunderbird pegging a core at 100%?Thunderbird resets profile after second start upClearing out Thunderbird on UbuntuThunderbird and a shared “home” partitionBidirectionally synchronize Thunderbird profiles (POP3 mail accounts) between two computersWhy doesn't Ubuntu/Thunderbird save my PGP key?How to start Thunderbird minimized to Unity system tray on start-up?Recovering thunderbird files from quick formatted drive?