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 a situation where I need to grab a large number from a string. The two cases I'm working with are:
1) when the number is made up of only numbers, like 265038960
2) When the number has a letter appended to it, like 69235M
I've been using the regex pattern
(\d.+)[A-Z]
This works for the second case and grabs '69235' without the 'M', but breaks on the first case where a letter is not found.
How can I use a condition within the regex to only parse out the number whether or not a letter is present at the end of the string?
(\d+[A-Z]?) # capture any number of digits, together with 0 or 1 uppercase letter
It's not clear if you want to capture the letter or not. In the case you want to dispose of the letter:
(\d+)[A-Z]? # capture any number of digits, followed by 0 or 1 uppercase letter
Look at example
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 2 years ago.
Improve this question
Design an algorithm to determine how many numbers are in a string. Example, given the string "Hello people from the 4 worlds, this is my only 1 program", the output must be 2.
Basically you need to write a simple parser to parse out the numbers in your string. To do that you need to be able to recognise a number correctly, which is a little more complicated than just recognising digits. Something like "-12,348.971" is a number, but contains the characters -,. which are not digits. However, the string "-,." is not itself a number.
Read through the string, character by character. When the parser finds the start of a number, count one more number found, and read through all the characters that form that number. Read '123' as a single number, not three numbers. When you reach the end of the number skip over non-number characters until either you find the next number or you reach the end of the file.
You might want to read up on writing a simple parser in the language of your choice.
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 6 years ago.
Improve this question
On what language is more easy to code that kind of algorithm and make it more flexible to changes.
It's pretty easy to do, at least in widely used programming languages that I'm aware of (e.g. C++, Java, etc).
Store all possible characters in an ordered collection like array or a string. For example, you can make a string that contains all letters and digits like so:
// Exact syntax depends on your programming language.
//
// I used a string for simplicity here but some languages don't allow
// you to access individual string characters so you'll need an array.
//
string a = "abcdefghijklmnopqrstuvwxyz0123456789";
Generate a random number between 0 and length(a) - 1 (size of your character set array minus one).
Use the number you generated as an index and extract the character from the array at that index.
Congratulations! You've just generated one random character from your character set. Go back to step #2 and repeat N - 1 times (N is here the total number of characters you want to generate).
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 7 years ago.
Improve this question
Is there an algorithm for handling secret words without storing them in clear text or using a reversible encryption?
Necessary operations include
getting the length of it, so that we can generate indexes
testing whether the n-th character matches a specific character
If you want to match the n-th character with another character, the encryption becomes easily reversible. An adversary just has to test all characters with all possible values. So in ASCII that will be 256*8=2048 for an 8 character password.
You should normally store a SHA-256 or SHA-512 of the password (possibly prefixed with a random salt) and compare this value against the user inputed value SHA-256/512ed.
You can also repeat the SHA-256/512 operations several thousand times to make attacks more difficult.
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 7 years ago.
Improve this question
I have a algorithmic based question. No code is required, just have to state how I would write this in words. Use n and m as variables if needed, in Java.
Enter the first string in the variable n.
Enter the second string in the variable m.
Compare the two string lengths :
*if they're different , return false.
Scan the two vector , character per character :
*if there's one difference, return false.
Return success.
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 8 years ago.
Improve this question
I have a list of keywords call it [cat, dog, bird] and a regex to find a weight (\dlbs).
I only want to find items that
start with the items in the array
(cat|dog|bird?)
match the weight regex
(\dlbs)
only have a max of 30 characters (excluding whitespace) between 1. and 2.
do not want to or care to capture the 1-30 characters
Any help appreciated!
This will do it:
(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\dlbs)
Debuggex Demo
Edited to reflect the "excluding whitespace" point.
It matches, for example, each of the following:
The cat weighs almost exactly 7lbs.
The cat weighs almost exactly 7lbs
Note: you appear to have a stray ? in your question in (cat|dog|bird?) - I have ignored it. Also, are you sure you will have \dlbs, not, say, 17 lbs or 17 pounds? You can easily address those scenarios with
(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\d\s*(?:lb|pound)s)
(\s*.){0,30} Maximum 30 characters excluding white spaces:
(cat|dog|bird)(\s*.){0,30}\s*(\dlbs)