Results 1 to 9 of 9

Thread: QRegExp Not Repeated More Than Four Times.

  1. #1
    Join Date
    Feb 2015
    Posts
    22
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android

    Default QRegExp Not Repeated More Than Four Times.

    Here is the Regular Expression.

    QRegExp rx("^(?:[7-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9])$");

    Above Regular Expression I Dont Want Repeat More Than Four Times In LineEdit.

    Ex:7 22222 2222

    Kindly Do NeedFul..
    Last edited by mandlakoteswar2011; 21st September 2015 at 08:12.

  2. #2
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Wiki edits
    17

    Default Re: QRegExp Not Repeated More Than Four Times.

    What does the regular expression have to do with a line edit?
    What don't you want to repeat? The expression will match a 7 or 9 followed by up to nine other digits.

  3. #3
    Join Date
    Feb 2015
    Posts
    22
    Qt products
    Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android

    Default Re: QRegExp Not Repeated More Than Four Times.

    7 22222 222

    The Above Experisson it Wont Take "2"'s more than four times.

    plz give me the Regular Experssion Syntax.

  4. #4
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: QRegExp Not Repeated More Than Four Times.

    Quote Originally Posted by mandlakoteswar2011 View Post
    The Above Experisson it Wont Take "2"'s more than four times.
    As Chris67 said: your expression accecpts up to 9 digits after the first.
    If you only want to accept 4, then don't add the remaining 5 options.

    Cheers,
    _

  5. #5
    Join Date
    Jan 2008
    Location
    Alameda, CA, USA
    Posts
    5,230
    Thanks
    302
    Thanked 864 Times in 851 Posts
    Qt products
    Qt5
    Platforms
    Windows

    Default Re: QRegExp Not Repeated More Than Four Times.

    QRegExp rx("^(?:[7-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9])$");
    As I read your regular expression, it says:

    Match:
    • from the start of the string ("^")
    • the sub-expression: ("(?:")
    • zero or one of 7, 8, or 9 ("[7-9]?")
    • followed by zero or one of 0 through 9, up to eight times ("[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?")
    • followed by a single digit 0 through 9 ("[0-9]")
    • and this must be the entire string (")$")


    So your regex will match the following:

    • Any string containing only a single digit 0 - 9 (including strings containing only "7", "8", or "9")
    • Any string starting with 7, 8, or 9 and ending with any single digit 0 - 9
    • Any string starting with 7, 8, or 9 followed by up to eight more digits 0 - 9, ending with one more 0 - 9
    • Any string containing one through nine digits between 0 and 9


    For example:

    • "0" (or "1", "2", ... "9")
    • "70" (or "71", "72", ... "99")
    • "70" (or "701", "7012", "7013", ... "7012345678")
    • "0" (or "01", "012", "0123", ... "012345678"


    Note that it will not match "7 22222 222" since this contains embedded whitespace. It will match "722222222".

    Edit: So, your regex will match any string of one through eight digits between "0" and "99999999" and also any string of one through nine digits that starts with a "7", "8", or "9".
    Last edited by d_stranz; 21st September 2015 at 18:27.

  6. The following user says thank you to d_stranz for this useful post:

    anda_skoa (22nd September 2015)

  7. #6
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Wiki edits
    17

    Default Re: QRegExp Not Repeated More Than Four Times.

    Nice explanation d_stranz. Way more effort than I put in (no way i was going type type that on my tablet ). I hope it is not lost on the OP.

  8. The following user says thank you to ChrisW67 for this useful post:

    d_stranz (22nd September 2015)

  9. #7
    Join Date
    Dec 2009
    Location
    New Orleans, Louisiana
    Posts
    791
    Thanks
    13
    Thanked 153 Times in 150 Posts
    Qt products
    Qt5
    Platforms
    MacOS X

    Default Re: QRegExp Not Repeated More Than Four Times.

    Quote Originally Posted by mandlakoteswar2011 View Post
    QRegExp rx("^(?:[7-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9])$");
    If you are attempting to require that the first digit is 7-9, your regex is not correct as you have said zero or one (?) digit 7-9 is required. If you want to require that the regex matches a number that starts with 7-9 and has a max of 9 other digits 0-9, then the regex should be:
    Qt Code:
    1. QRegExp rx("^(?:[7-9][0-9]{1,9})$");
    To copy to clipboard, switch view to plain text mode 
    The above will match a digit between 7-9 followed by up to a minimum of 1 and maximum of 9 more digits 0-9. Additionally, since you're using a non-capturing group, which consists is the entire regex expression, you can likely just remove the grouping altogether.
    I write the best type of code possible, code that I want to write, not code that someone tells me to write!

  10. The following user says thank you to jefftee for this useful post:

    d_stranz (22nd September 2015)

  11. #8
    Join Date
    Jan 2008
    Location
    Alameda, CA, USA
    Posts
    5,230
    Thanks
    302
    Thanked 864 Times in 851 Posts
    Qt products
    Qt5
    Platforms
    Windows

    Default Re: QRegExp Not Repeated More Than Four Times.

    Additionally, since you're using a non-capturing group, which consists is the entire regex expression, you can likely just remove the grouping altogether.
    I thought about mentioning that as well as posting the simplified expression you gave. But since I have no idea what the OP was actually trying to match, I just left it alone.

    Perhaps the OP can respond with examples of what he does and does not want to match, then we can help with a better regex.

    Spent a lot of time years ago writing lex and yacc code to parse specialty "little languages" (as Jon Bentley calls them), so got pretty good at crafting regular expressions.
    Last edited by d_stranz; 22nd September 2015 at 20:39.

  12. #9
    Join Date
    Dec 2009
    Location
    New Orleans, Louisiana
    Posts
    791
    Thanks
    13
    Thanked 153 Times in 150 Posts
    Qt products
    Qt5
    Platforms
    MacOS X

    Default Re: QRegExp Not Repeated More Than Four Times.

    Quote Originally Posted by d_stranz View Post
    Spent a lot of time years ago writing lex and yacc code to parse specialty "little languages" (as Jon Bentley calls them), so got pretty good at crafting regular expressions.
    lex, yacc, regular expressions, and many other CS concepts are a black/lost art today for sure and as foreign to some as the courses I took way back in my undergrad days. Most of my CS background was theory based, data structures, algorithms, and of course programming language based, etc. Not sure what the CS curriculum in schools are all about nowadays, but I'm sure they're rife with the web languages of the day, HTML, CSS, etc.

    Often I find tortured uses for regular expressions when they're not really needed, or the opposite where a regex is a perfect solution that gets implemented in unmaintainable spaghetti code to parse stuff... The most valuable skill to have is to know when one is called for vs the other...
    I write the best type of code possible, code that I want to write, not code that someone tells me to write!

Similar Threads

  1. Replies: 0
    Last Post: 2nd April 2013, 19:26
  2. Replies: 0
    Last Post: 2nd April 2013, 10:48
  3. Animation problems, after repeated calls to start
    By pan in forum Qt Programming
    Replies: 2
    Last Post: 11th March 2011, 12:27
  4. QTabWidget currentChanged signal for repeated selects of a tab
    By balasaravanan in forum Qt Programming
    Replies: 1
    Last Post: 11th January 2011, 06:04
  5. Replies: 1
    Last Post: 3rd August 2009, 12:44

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.