How to check if there are two concatenated methods with regex?












0















What is the best way to check, if there are any lines with two methods concatenated? In my case between .where(*) and .first, .last, .single
For example,
I want to get: foo.where(smth).first()
But not: foo.where(smth).bar().first()
So if there two concatenated methods (.where with .first or .last or .single), I want get this line.



I've tried to make regex for it: .where(.*?).(first|last|single)
https://regex101.com/r/3a7SpE/1



But, as I understood, back tracking makes foo.where(smth).bar().first() also "correct".



What should I change to make this works, please?










share|improve this question

























  • Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

    – Wiktor Stribiżew
    Jan 2 at 11:43













  • Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

    – danielD
    Jan 2 at 12:12













  • Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

    – Wiktor Stribiżew
    Jan 2 at 12:26











  • I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

    – danielD
    Jan 2 at 12:36











  • Ok, so, regex is not an option.

    – Wiktor Stribiżew
    Jan 2 at 12:40
















0















What is the best way to check, if there are any lines with two methods concatenated? In my case between .where(*) and .first, .last, .single
For example,
I want to get: foo.where(smth).first()
But not: foo.where(smth).bar().first()
So if there two concatenated methods (.where with .first or .last or .single), I want get this line.



I've tried to make regex for it: .where(.*?).(first|last|single)
https://regex101.com/r/3a7SpE/1



But, as I understood, back tracking makes foo.where(smth).bar().first() also "correct".



What should I change to make this works, please?










share|improve this question

























  • Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

    – Wiktor Stribiżew
    Jan 2 at 11:43













  • Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

    – danielD
    Jan 2 at 12:12













  • Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

    – Wiktor Stribiżew
    Jan 2 at 12:26











  • I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

    – danielD
    Jan 2 at 12:36











  • Ok, so, regex is not an option.

    – Wiktor Stribiżew
    Jan 2 at 12:40














0












0








0








What is the best way to check, if there are any lines with two methods concatenated? In my case between .where(*) and .first, .last, .single
For example,
I want to get: foo.where(smth).first()
But not: foo.where(smth).bar().first()
So if there two concatenated methods (.where with .first or .last or .single), I want get this line.



I've tried to make regex for it: .where(.*?).(first|last|single)
https://regex101.com/r/3a7SpE/1



But, as I understood, back tracking makes foo.where(smth).bar().first() also "correct".



What should I change to make this works, please?










share|improve this question
















What is the best way to check, if there are any lines with two methods concatenated? In my case between .where(*) and .first, .last, .single
For example,
I want to get: foo.where(smth).first()
But not: foo.where(smth).bar().first()
So if there two concatenated methods (.where with .first or .last or .single), I want get this line.



I've tried to make regex for it: .where(.*?).(first|last|single)
https://regex101.com/r/3a7SpE/1



But, as I understood, back tracking makes foo.where(smth).bar().first() also "correct".



What should I change to make this works, please?







java regex






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 2 at 12:40









Wiktor Stribiżew

325k16146226




325k16146226










asked Jan 2 at 11:41









danielDdanielD

41




41













  • Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

    – Wiktor Stribiżew
    Jan 2 at 11:43













  • Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

    – danielD
    Jan 2 at 12:12













  • Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

    – Wiktor Stribiżew
    Jan 2 at 12:26











  • I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

    – danielD
    Jan 2 at 12:36











  • Ok, so, regex is not an option.

    – Wiktor Stribiżew
    Jan 2 at 12:40



















  • Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

    – Wiktor Stribiżew
    Jan 2 at 11:43













  • Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

    – danielD
    Jan 2 at 12:12













  • Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

    – Wiktor Stribiżew
    Jan 2 at 12:26











  • I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

    – danielD
    Jan 2 at 12:36











  • Ok, so, regex is not an option.

    – Wiktor Stribiżew
    Jan 2 at 12:40

















Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

– Wiktor Stribiżew
Jan 2 at 11:43







Try .where([^()]*?).(?:first|last|single), but if the text inside parentheses can contain ( or ), the task becomes much harder. Do you need to match specific grammar?

– Wiktor Stribiżew
Jan 2 at 11:43















Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

– danielD
Jan 2 at 12:12







Thanks, it got better. But unfortunately, another method is possible in .where(), and text inside parentheses could contain other parentheses..

– danielD
Jan 2 at 12:12















Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

– Wiktor Stribiżew
Jan 2 at 12:26





Do you think matching any amount of nested paired parentheses will work for you? What is the programming language?

– Wiktor Stribiżew
Jan 2 at 12:26













I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

– danielD
Jan 2 at 12:36





I guess yes. As test case I use: a.where(x -> x.getName() != "something").first() Programming language is Java.

– danielD
Jan 2 at 12:36













Ok, so, regex is not an option.

– Wiktor Stribiżew
Jan 2 at 12:40





Ok, so, regex is not an option.

– Wiktor Stribiżew
Jan 2 at 12:40












0






active

oldest

votes











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%2f54005710%2fhow-to-check-if-there-are-two-concatenated-methods-with-regex%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















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%2f54005710%2fhow-to-check-if-there-are-two-concatenated-methods-with-regex%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

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

Npm cannot find a required file even through it is in the searched directory