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

How could indestructible materials be used in power generation?

How to compactly explain secondary and tertiary characters without resorting to stereotypes?

Can a virus destroy the BIOS of a modern computer?

Why do I get negative height?

Should I tell management that I intend to leave due to bad software development practices?

How to stretch the corners of this image so that it looks like a perfect rectangle?

Is it possible to mathematically extract an AES key from black-box encrypt/decrypt hardware?

Car headlights in a world without electricity

Does Fukaya see all symplectic topology?

Why would the Red Woman birth a shadow if she worshipped the Lord of the Light?

meaning of 腰を落としている

GFCI outlets - can they be repaired? Are they really needed at the end of a circuit?

How to properly check if the given string is empty in a POSIX shell script?

Array of objects return object when condition matched

Ambiguity in the definition of entropy

How can a day be exactly 24 hours long?

Is Mindfulness the Opposite of Multitasking?

What reasons are there for a Capitalist to oppose a 100% inheritance tax?

Is it possible to create a QR code using text?

Does the Cone of Cold spell freeze water?

Placement of More Information/Help Icon button for Radio Buttons

Simple macro for new # symbol

What exactly is ineptocracy?

Bullying boss launched a smear campaign and made me unemployable



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 Mar 28 at 2:23









      0m3r

      8,04792554




      8,04792554










      asked Mar 28 at 2:04









      bongbangbongbang

      617720




      617720






















          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
            Mar 28 at 2:40



















          1














          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
              Mar 28 at 2:40
















            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
              Mar 28 at 2:40














            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 Mar 28 at 2:16









            Danielle M.Danielle M.

            2,2541623




            2,2541623












            • 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
              Mar 28 at 2:40


















            • 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
              Mar 28 at 2:40

















            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
            Mar 28 at 2:40






            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
            Mar 28 at 2:40














            1














            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



























              1














              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

























                1












                1








                1







                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 Mar 28 at 2:45









                bongbangbongbang

                617720




                617720



























                    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

                    Quoting Keynes in a lectureIs differentiated instruction permitted by universities?How to make students learn prerequisitesUnsatisfactory Instructor Evaluations: balancing of expectations of engineering studentsWhat is the difference between a “statistician”, “applied statistician”, and an academic applying advanced stats within their field?Listing in reference section, but not quotingHow to efficiently use time while preparing for a class?Graduate Admissions: Teaching Emphasisstrategies for sharing teaching information with universities I don't personally have contacts withIs there an efficient way to give a large class of students feedback about their assignments?Is it unreasonable to expect students to read the lecture notes before attending the first class?

                    Rank groups within a grouped sequence of TRUE/FALSE and NAGrouping functions (tapply, by, aggregate) and the *apply familyCharacters counting and subletting specific patternsWhat is the purpose of setting a key in data.table?data.table vs dplyr: can one do something well the other can't or does poorly?how to make a bar plot for a list of dataframes?How to group by unique values in a list in RPandas - Alternative to rank() function that gives unique ordinal ranks for a columnRank within group in for loop in RData transformation: from dyadic to observational data in RGetting map from purrr to work with paste0

                    Are all passive ability checks floors for active ability checks?Does passive perception supersede active perception?Which skills can be used passively?Active Opposition with Free-Form Professions in Fate5E Trap/Ambush/Stealth Mechanics VS Passive Perception ConfusionInteraction between perception and stealth in obscured conditionsHow does Keen Sight affect Passive Perception?Are all d20 rolls either attacks, saves or ability checks?Can players declare that they are making a specific ability check?Can I see a Hidden creature that is not obscured at all?Can a Stealth check ever be made passively?Is this alternate version of the Observant feat balanced?What is the minimum amount of skill points per HD?