Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I'm not really good at regex or I can say that I'm a totally beginner to it. I want to know the regex from the following format:
LB-[0-999] - "LB-" with 0 - 999 digits and no spaces at the beginning, middle, and end.
XX-[0-19999] - Only two Capitalize letters in any combination with "-" and 0-19999 digits and no spaces at the beginning, middle and end.
XXX-[0-19999] - Only three Capitalize letters in any combination with "-" and 0-19999 digits and no spaces at the beginning, middle and end.
I want to get all three patterns but I'm really new to regex. I was planning to use it as html5 input validation and I'm really out of time of studying it.
This is what I tried so far:
^LB-[0-9]$
/LB\-[0-9]{1,3}/
/[A-Z]{2}\-1?[0-9]{1,4}/
/[A-Z]{3}\-1?[0-9]{1,4}/
With [0-9] you make appear only numbers in this set: 0 until 9 and with [A-Z] only capital letter from alphabeta. In {1,3} and {1,4} you make obligated to have at least one letter/number and at most four or three. With ?1 you make optional the present of a number 1 before your number, that will be present only for 10000 number or greater. This are three different er for each one of your possible entries.
Consider the changes prosed by user in his last comment the code will be like this:
/LB\-(00[1-9] | [1-9][0-9] | [1-9][0-9]{2})/
/[A-Z]{2}\-(0000[1-9] | 000[1-9][0-9] | 00[1-9][0-9]{2} | 0[1-9][0-9]{3} | 1[0-9][0-9]{3})/
/[A-Z]{3}\-(0000[1-9] | 000[1-9][0-9] | 00[1-9][0-9]{2} | 0[1-9][0-9]{3} | 1[0-9][0-9]{3})/
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I have the following sentence:
b.g The big bag of bits was bugged.
How can I exclude the b.g from it by using a regular expression?
I am sure I need a negative lookahead but I cannot get it right yet.
Something like
^(?!b\.g)
I would do it this way:
[^\S].*
What [^\S] does is basically skip any character until it reaches the first space. then start capturing. No need in this case for negative or positing Lookbehind.
Demo: regex101
If you prefer to do it with positive Lookbehind, you can do it this way
(?<=b\.g).*
Demo: regex101
sed 's/^...//' strips the first 3 characters, "b.g", but I doubt that's what you're really asking. Your ^ anchor appears to be a red herring.
You already have correct escaping for . period, just stick with that:
sed 's/b\.g//'
Python's positive lookbehind ?<= may be what you are trying to find words to express:
>>> m = re.search(r'(?<=b\.g)(.*)', 'b.g The big bag of bits was bugged.')
>>> print(m.group(1))
The big bag of bits was bugged.
In python you could do something like this:
import re
w = 'b.g The big bag of bits was bugged.'
print w
d = re.compile(r'^b.g\s')
a = re.sub(d, '', w)
print a
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
Which expression should I use to identify the number of hydrogen atoms in a chemical formula?
For example:
C40H51N11O19 - 51 hydrogens
C2HO - 1 hydrogen
CO2 - no hydrogens (empty)
Any suggestions?
Thanks!
Cheers!
You can start using this regex :
H\d*
H -> match literaly the H caracter
d* -> match 0 to N time a digit
see exemple and try yourself other regex at :
https://regex101.com/r/vdvH8S/2
But regex wont convert for you the result, regex only do lookup.
You need to process your result saying :
H with a number : extract the number
only H : 1
no match : 0
A Regex Expression that will match H with follwowing digits would be:
/H(\d+)/g
The 'H' is a literal charecter match to the H in the given chemical
formula
() declares a capture group, so you cna then grab the captured group without the H in whatever programming language you are using
\d will match any digit along with the + modifier that matches 1 or more
There is no catch all scenarios here, you might be best using something other than a regex.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I need a regular expression for the elo credit card which should allow only first 6 digits are mentioned below. The total length will be 16 and all 16 should be numbers only. Alphabets are not allow.
Allowed prefixes:
401178, 401179, 431274, 438935, 451416, 457393, 457631, 457632,
504175, 627780, 636297, 636368, 655000, 655001, 651652, 651653,
651654, 650485, 650486, 650487, 650488, 506699 to 506778 and 509000
to 509999
Use an alternation, with a bit of extra work to cover the two numerical ranges you have.
^(?:401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636368|
655000|655001|651652|651653|651654|650485|650486|650487|650488|506699|5067[0-6][0-9]|
50677[0-8]|509\d{3})\d{10}$
Here is how we handle the two ranges:
506699 to 506778
506699| matches 506699
5067[0-6][0-9]| matches 506700 through and including 506769
50677[0-8] matches 506770 through and including 506778
509000 to 509999
509\d{3} matches 509000 through and including 509999
i.e. 509 followed by any 3 digits
Demo here:
Regex101
You can try this:
^(?:40117[8-9]|431274|438935|451416|457393|45763[1-2]|504175
|627780|636297|636368|65500[0-1]|65165[2-4]|65048[5-8]|506699
|5067[0-6]\d|50677[0-8]|509\d{3})\d{10}$
Demo
Simple Explanation
^ Start of the line
( start of group
?: will not store it in the group
40117[8-9] means 40117 followed by anything between 8 to 9 ( same
applies for similars)
| means OR
5067[0-6]\d means 5067 + a digit between 0 to 6 + a single digit
(any)
\d{10} means it will see if the next 10 characters are digits (after previous valid 6 digits)
$ end of the line
Basically, you need alternation with some range operators to shorten the regex.
The most tricky part is to define the range 506699 to 506778, which can be represented as 506699|5067[06]\d|50677[0-8].
(?x)^(?:
40117[89]|431274|438935|451416|457393|457631|457632|504175
|627780|636297|636368|65500[01]|65165[234]|65048[5-8]
|506699|5067[06]\d|50677[0-8]
|509\d{3}
)\d{10}$
Demo: https://regex101.com/r/BbnHeQ/2
NB: the (?x) is used to allow for whitespace characters in the regex, which simplifies reading for log expressions.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
For example
1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12
extract lines between 1cn8 to 1cn12
like this i have hundreds of line, want to extract any range by giving the input.
$ cat test | grep '[$0-9]'
1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12
these are node names, want to extract node names within the node range. lines starting from1cn8 till 1cn12
You can try something like that:
[[:alnum:]]{3}([8-9]|1[0-2])
Short explanation:
[[:alnum:]]{3}: matchs with any letter (upper or lower case) and digits, over 3 times;
([8-9]|1[0-2]): matchs with 8 and 9 [8-9] OR |, the number one with 0, 1 or 2, 1[0-2]
$ cat test
1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12
$ egrep '[[:alnum:]]{3}([8-9]|1[0-2])' test
1cn8
1cn9
1cn10
1cn11
1cn12
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
I need to limit an accepted text response to be only in the following format:
1234567.123 AorABorABCD (1or12)
So, 7-digits.3-digits 1-4Letters (1-3-digits)
This is a SKU number, followed by 1-4 letters noting size (S or YM or SMMD) followed by 1-3 digits noting quantity needed.
Any help is appreciated -- thanks!
Something like this?
\d{7}\.\d{3}\s[A-Za-z]{1,4}
Explanation:
\d{7} - matches 7 digits
\. matches the dot (".")
\d{3} - again, matches 3 digits
\s - matches a whitespace
[A-Za-z]{1,4} - matches 1-4 letters from A to Z no matter the case.
Will match:
1234567.123 AABd
1534567.113 AaAA
4586451.773 dasA
1231846.123 A
1234567.123 Ao
1234567.123 Aor
1234567.123 AorA
1234567.123 AorA
1234567.123 AorA
Also, if you do not need all letters from A to Z change the range accordingly.
EDIT: Forgot the slash before the dot, mind the changed content.
You can try it here