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;
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
add a comment |
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
add a comment |
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
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
apex regular-expressions
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
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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.
1
Callingfind
will return true if you match just a substring.
– Adrian Larson♦
4 hours ago
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
1
Callingfind
will return true if you match just a substring.
– Adrian Larson♦
4 hours ago
add a comment |
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.
1
Callingfind
will return true if you match just a substring.
– Adrian Larson♦
4 hours ago
add a comment |
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.
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.
answered 6 hours ago
identigralidentigral
1,8149 silver badges15 bronze badges
1,8149 silver badges15 bronze badges
1
Callingfind
will return true if you match just a substring.
– Adrian Larson♦
4 hours ago
add a comment |
1
Callingfind
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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