Struggling with Pattern.matchesRegular Expression in Apex to find entire link in stringField is not writeable: CAM_Members__c.Affiliate_State__cRegex including curly bracketsRegular Expression matches returns falseWhat is wrong with my Flow Interview?

What are good ways to improve as a writer other than writing courses?

Why should we care about syntactic proofs if we can show semantically that statements are true?

Accidentals - some in brackets, some not

Could one become a successful researcher by writing some really good papers while being outside academia?

What is my malfunctioning AI harvesting from humans?

Was the 2019 Lion King film made through motion capture?

sed delete all the words before a match

What is the maximum number of PC-controlled undead?

Does two puncture wounds mean venomous snake?

Optimal way to extract "positive part" of a multivariate polynomial

How do I calculate the difference in lens reach between a superzoom compact and a DSLR zoom lens?

Write an interpreter for *

Team goes to lunch frequently, I do intermittent fasting but still want to socialize

How do I explain to a team that the project they will work on for six months will certainly be cancelled?

How to use grep to search through the --help output?

How quickly could a country build a tall concrete wall around a city?

In Pokémon Go, why does one of my Pikachu have an option to evolve, but another one doesn't?

How can I iterate this process?

Why aren’t emergency services using callsigns?

In a topological space if there exists a loop that cannot be contracted to a point does there exist a simple loop that cannot be contracted also?

How do we avoid CI-driven development...?

Struggling with Pattern.matches

Does this Foo machine halt?

What's this thing in a peltier cooler?



Struggling with Pattern.matches


Regular Expression in Apex to find entire link in stringField is not writeable: CAM_Members__c.Affiliate_State__cRegex including curly bracketsRegular Expression matches returns falseWhat is wrong with my Flow Interview?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















My regular expression is working properly here: https://regexr.com/4j143



However, when I try to use it in Apex it is not working:



String regExp = '/\s1,(ORDER BY)\s1,(ID)(\s1,(ASC))0,1(\s1,(NULLS)\s1,(LAST))0,1\s0,,/gi';
String input = 'SELECT * FROM ... ORDER BY ID, INDUSTRY ASC';

System.debug(Pattern.matches(regExp, input));


What am I doing wrong? How do I fix it?










share|improve this question
































    1















    My regular expression is working properly here: https://regexr.com/4j143



    However, when I try to use it in Apex it is not working:



    String regExp = '/\s1,(ORDER BY)\s1,(ID)(\s1,(ASC))0,1(\s1,(NULLS)\s1,(LAST))0,1\s0,,/gi';
    String input = 'SELECT * FROM ... ORDER BY ID, INDUSTRY ASC';

    System.debug(Pattern.matches(regExp, input));


    What am I doing wrong? How do I fix it?










    share|improve this question




























      1












      1








      1








      My regular expression is working properly here: https://regexr.com/4j143



      However, when I try to use it in Apex it is not working:



      String regExp = '/\s1,(ORDER BY)\s1,(ID)(\s1,(ASC))0,1(\s1,(NULLS)\s1,(LAST))0,1\s0,,/gi';
      String input = 'SELECT * FROM ... ORDER BY ID, INDUSTRY ASC';

      System.debug(Pattern.matches(regExp, input));


      What am I doing wrong? How do I fix it?










      share|improve this question
















      My regular expression is working properly here: https://regexr.com/4j143



      However, when I try to use it in Apex it is not working:



      String regExp = '/\s1,(ORDER BY)\s1,(ID)(\s1,(ASC))0,1(\s1,(NULLS)\s1,(LAST))0,1\s0,,/gi';
      String input = 'SELECT * FROM ... ORDER BY ID, INDUSTRY ASC';

      System.debug(Pattern.matches(regExp, input));


      What am I doing wrong? How do I fix it?







      apex regular-expressions






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 4 hours ago









      Adrian Larson

      115k19 gold badges135 silver badges274 bronze badges




      115k19 gold badges135 silver badges274 bronze badges










      asked 8 hours ago









      SauloSaulo

      3042 silver badges11 bronze badges




      3042 silver badges11 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          3














          This has to do with Java's unfortunate implementation of matches() - it assumes the input is the entire string. You feed it a regex of /\s1,...0,,/gi hoping that matches() will return true if the pattern matches a part of the input string but the actual regex that gets executed is /^\s1,...0,,$/gi. That will not match your entire string because your string does not begin with one or more spaces.



          Salesforce docs do explain this nuance:




          A Matcher object finds matches in a subset of its input string called
          a region. The default region for a Matcher object is always the
          entirety of the input string.




          With default region being the entire string, you need to revise your regex by adding segments that match text at the beginning and end of the string (before ORDER BY and after ASC|NULLS|LAST). Here's a simplified, single-backslashed version of your regex with matches() returning true on the region as entire input string:



          (.*)s+(ORDER BY)s+(w+,?s+)+ASC



          If only a portion of your string should be considered "input", the region() function referenced in the doc above will be useful.






          share|improve this answer




















          • 1





            Calling find will return true if you match just a substring.

            – Adrian Larson
            4 hours ago













          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "459"
          ;
          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: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          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%2fsalesforce.stackexchange.com%2fquestions%2f273146%2fstruggling-with-pattern-matches%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          This has to do with Java's unfortunate implementation of matches() - it assumes the input is the entire string. You feed it a regex of /\s1,...0,,/gi hoping that matches() will return true if the pattern matches a part of the input string but the actual regex that gets executed is /^\s1,...0,,$/gi. That will not match your entire string because your string does not begin with one or more spaces.



          Salesforce docs do explain this nuance:




          A Matcher object finds matches in a subset of its input string called
          a region. The default region for a Matcher object is always the
          entirety of the input string.




          With default region being the entire string, you need to revise your regex by adding segments that match text at the beginning and end of the string (before ORDER BY and after ASC|NULLS|LAST). Here's a simplified, single-backslashed version of your regex with matches() returning true on the region as entire input string:



          (.*)s+(ORDER BY)s+(w+,?s+)+ASC



          If only a portion of your string should be considered "input", the region() function referenced in the doc above will be useful.






          share|improve this answer




















          • 1





            Calling find will return true if you match just a substring.

            – Adrian Larson
            4 hours ago















          3














          This has to do with Java's unfortunate implementation of matches() - it assumes the input is the entire string. You feed it a regex of /\s1,...0,,/gi hoping that matches() will return true if the pattern matches a part of the input string but the actual regex that gets executed is /^\s1,...0,,$/gi. That will not match your entire string because your string does not begin with one or more spaces.



          Salesforce docs do explain this nuance:




          A Matcher object finds matches in a subset of its input string called
          a region. The default region for a Matcher object is always the
          entirety of the input string.




          With default region being the entire string, you need to revise your regex by adding segments that match text at the beginning and end of the string (before ORDER BY and after ASC|NULLS|LAST). Here's a simplified, single-backslashed version of your regex with matches() returning true on the region as entire input string:



          (.*)s+(ORDER BY)s+(w+,?s+)+ASC



          If only a portion of your string should be considered "input", the region() function referenced in the doc above will be useful.






          share|improve this answer




















          • 1





            Calling find will return true if you match just a substring.

            – Adrian Larson
            4 hours ago













          3












          3








          3







          This has to do with Java's unfortunate implementation of matches() - it assumes the input is the entire string. You feed it a regex of /\s1,...0,,/gi hoping that matches() will return true if the pattern matches a part of the input string but the actual regex that gets executed is /^\s1,...0,,$/gi. That will not match your entire string because your string does not begin with one or more spaces.



          Salesforce docs do explain this nuance:




          A Matcher object finds matches in a subset of its input string called
          a region. The default region for a Matcher object is always the
          entirety of the input string.




          With default region being the entire string, you need to revise your regex by adding segments that match text at the beginning and end of the string (before ORDER BY and after ASC|NULLS|LAST). Here's a simplified, single-backslashed version of your regex with matches() returning true on the region as entire input string:



          (.*)s+(ORDER BY)s+(w+,?s+)+ASC



          If only a portion of your string should be considered "input", the region() function referenced in the doc above will be useful.






          share|improve this answer













          This has to do with Java's unfortunate implementation of matches() - it assumes the input is the entire string. You feed it a regex of /\s1,...0,,/gi hoping that matches() will return true if the pattern matches a part of the input string but the actual regex that gets executed is /^\s1,...0,,$/gi. That will not match your entire string because your string does not begin with one or more spaces.



          Salesforce docs do explain this nuance:




          A Matcher object finds matches in a subset of its input string called
          a region. The default region for a Matcher object is always the
          entirety of the input string.




          With default region being the entire string, you need to revise your regex by adding segments that match text at the beginning and end of the string (before ORDER BY and after ASC|NULLS|LAST). Here's a simplified, single-backslashed version of your regex with matches() returning true on the region as entire input string:



          (.*)s+(ORDER BY)s+(w+,?s+)+ASC



          If only a portion of your string should be considered "input", the region() function referenced in the doc above will be useful.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 6 hours ago









          identigralidentigral

          1,8149 silver badges15 bronze badges




          1,8149 silver badges15 bronze badges










          • 1





            Calling find will return true if you match just a substring.

            – Adrian Larson
            4 hours ago












          • 1





            Calling find will return true if you match just a substring.

            – Adrian Larson
            4 hours ago







          1




          1





          Calling find will return true if you match just a substring.

          – Adrian Larson
          4 hours ago





          Calling find will return true if you match just a substring.

          – Adrian Larson
          4 hours ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Salesforce Stack Exchange!


          • 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%2fsalesforce.stackexchange.com%2fquestions%2f273146%2fstruggling-with-pattern-matches%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

          Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

          Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

          Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її