Python regex search for decimal digits not followed by character












2















Using re.search to find one or more decimal digits, an optional K character, not followed by a '%'.



Tried this:



re.search (r'(d+K?)(?!%)', s).group (0)


With the following values for s:



10K 1%
2% 10K
20% 10K


Which returns:



10K
10K
2


The first two results are correct, the last one is not. I want the digit matching to be greedy and skip the "20%" and match the "10K" instead. Found a solution for Java (++), but not Python. Thanks for any tips on this, searched online extensively, but answer has been elusive.










share|improve this question























  • Are word boundaries significant? b(d+K?)(?!%)b may help.

    – ggorlen
    Nov 20 '18 at 3:52











  • @ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

    – Element Green
    Nov 20 '18 at 4:43
















2















Using re.search to find one or more decimal digits, an optional K character, not followed by a '%'.



Tried this:



re.search (r'(d+K?)(?!%)', s).group (0)


With the following values for s:



10K 1%
2% 10K
20% 10K


Which returns:



10K
10K
2


The first two results are correct, the last one is not. I want the digit matching to be greedy and skip the "20%" and match the "10K" instead. Found a solution for Java (++), but not Python. Thanks for any tips on this, searched online extensively, but answer has been elusive.










share|improve this question























  • Are word boundaries significant? b(d+K?)(?!%)b may help.

    – ggorlen
    Nov 20 '18 at 3:52











  • @ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

    – Element Green
    Nov 20 '18 at 4:43














2












2








2








Using re.search to find one or more decimal digits, an optional K character, not followed by a '%'.



Tried this:



re.search (r'(d+K?)(?!%)', s).group (0)


With the following values for s:



10K 1%
2% 10K
20% 10K


Which returns:



10K
10K
2


The first two results are correct, the last one is not. I want the digit matching to be greedy and skip the "20%" and match the "10K" instead. Found a solution for Java (++), but not Python. Thanks for any tips on this, searched online extensively, but answer has been elusive.










share|improve this question














Using re.search to find one or more decimal digits, an optional K character, not followed by a '%'.



Tried this:



re.search (r'(d+K?)(?!%)', s).group (0)


With the following values for s:



10K 1%
2% 10K
20% 10K


Which returns:



10K
10K
2


The first two results are correct, the last one is not. I want the digit matching to be greedy and skip the "20%" and match the "10K" instead. Found a solution for Java (++), but not Python. Thanks for any tips on this, searched online extensively, but answer has been elusive.







python regex






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 20 '18 at 3:39









Element GreenElement Green

288




288













  • Are word boundaries significant? b(d+K?)(?!%)b may help.

    – ggorlen
    Nov 20 '18 at 3:52











  • @ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

    – Element Green
    Nov 20 '18 at 4:43



















  • Are word boundaries significant? b(d+K?)(?!%)b may help.

    – ggorlen
    Nov 20 '18 at 3:52











  • @ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

    – Element Green
    Nov 20 '18 at 4:43

















Are word boundaries significant? b(d+K?)(?!%)b may help.

– ggorlen
Nov 20 '18 at 3:52





Are word boundaries significant? b(d+K?)(?!%)b may help.

– ggorlen
Nov 20 '18 at 3:52













@ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

– Element Green
Nov 20 '18 at 4:43





@ggorlen no, they aren't unfortunately. It could be a standalone value like 10K or just a number like 100. I'm trying to parse a resistor value from schematics which could be just a resistance value, but could also have a percent tolerance, in either order and possibly with no space in between.

– Element Green
Nov 20 '18 at 4:43












2 Answers
2






active

oldest

votes


















1














Try regex d+K?(?= |$)



This will check a space or an End of the line after K.



Regex






share|improve this answer



















  • 1





    Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

    – Element Green
    Nov 20 '18 at 5:03



















0














? mean match 0 or 1 time, replace pattern to (d+K)(?!%)






share|improve this answer
























  • 'K' is optional though. Guess I should have made that clear in the examples.

    – Element Green
    Nov 20 '18 at 4:03











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%2f53385873%2fpython-regex-search-for-decimal-digits-not-followed-by-character%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









1














Try regex d+K?(?= |$)



This will check a space or an End of the line after K.



Regex






share|improve this answer



















  • 1





    Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

    – Element Green
    Nov 20 '18 at 5:03
















1














Try regex d+K?(?= |$)



This will check a space or an End of the line after K.



Regex






share|improve this answer



















  • 1





    Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

    – Element Green
    Nov 20 '18 at 5:03














1












1








1







Try regex d+K?(?= |$)



This will check a space or an End of the line after K.



Regex






share|improve this answer













Try regex d+K?(?= |$)



This will check a space or an End of the line after K.



Regex







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 20 '18 at 4:44









RAN_0915RAN_0915

861216




861216








  • 1





    Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

    – Element Green
    Nov 20 '18 at 5:03














  • 1





    Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

    – Element Green
    Nov 20 '18 at 5:03








1




1





Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

– Element Green
Nov 20 '18 at 5:03





Looks like this one works fairly well for my purposes. I didn't think to use a positive look ahead instead of a negative. Thank you!

– Element Green
Nov 20 '18 at 5:03













0














? mean match 0 or 1 time, replace pattern to (d+K)(?!%)






share|improve this answer
























  • 'K' is optional though. Guess I should have made that clear in the examples.

    – Element Green
    Nov 20 '18 at 4:03
















0














? mean match 0 or 1 time, replace pattern to (d+K)(?!%)






share|improve this answer
























  • 'K' is optional though. Guess I should have made that clear in the examples.

    – Element Green
    Nov 20 '18 at 4:03














0












0








0







? mean match 0 or 1 time, replace pattern to (d+K)(?!%)






share|improve this answer













? mean match 0 or 1 time, replace pattern to (d+K)(?!%)







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 20 '18 at 3:48









lucas_lyfulucas_lyfu

1




1













  • 'K' is optional though. Guess I should have made that clear in the examples.

    – Element Green
    Nov 20 '18 at 4:03



















  • 'K' is optional though. Guess I should have made that clear in the examples.

    – Element Green
    Nov 20 '18 at 4:03

















'K' is optional though. Guess I should have made that clear in the examples.

– Element Green
Nov 20 '18 at 4:03





'K' is optional though. Guess I should have made that clear in the examples.

– Element Green
Nov 20 '18 at 4:03


















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%2f53385873%2fpython-regex-search-for-decimal-digits-not-followed-by-character%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

How to change which sound is reproduced for terminal bell?

Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

Can I use Tabulator js library in my java Spring + Thymeleaf project?