Regex String Mail [closed] - regex

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 3 years ago.
Improve this question
I have the following string: test#gmail.com, test#gmail.com <test#gmail.com>, Test Gmail <test#gmail.com>, Test, Gmail <test#gmail.com>.
I would like to use a regex to obtain the following result in an array :
test#gmail.com,
test#gmail.com <test#gmail.com>,
Test Gmail <test#gmail.com>,
Test, Gmail <test#gmail.com>
It is unfortunately not possible to use the comma as separator because it can be included in the string preceding the email (ex : Test, Gmail <test#gmail.com>

((?>(?:\w+#\w+\.\w+)|(?:[^<>\n]+))(?> ?<(?:\w+#\w+\.\w+)>)?)(?:, )?
This will match your sample strings as you have written them.
(?>(?:\w+#\w+\.\w+)|(?:[^<>\n]+)) Match either an email, or some string of characters that does not have <, >, or \n in it, checking first for the email.
(?> ?<(?:\w+#\w+\.\w+)>)? Optionally match another email (with an optional space in front of it).
(?:, )? Optionally match a comma and a space.
Note that this will do nothing to validate whether the captured string is a correctly formatted email; it will only collect strings that look like them, and even then, will only do so only for the format of the specific input you've provided in your example.
Try it here!

Related

REGEX to get all email addresses from forwarded gmail [closed]

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 13 days ago.
Improve this question
I need to get all email addresses from TO, From and cc(Separately) from forwarded email body.
Is this possible with regex?
I am new to regex so don't understand it completely. Can someone help me build this logic?
REGEX LOGIC
You could use [a-zA-Z0-9-_.]+#[a-zA-Z0-9-_.]+ from regex extract email from strings then also add an additional part to it which would allow you to identify CC / To / From separately.
The pattern is 1 or more occurrences of:
a-z: any lowercase letter
A-Z: any uppercase letter
0-9: any digit
-_.: a hyphen, an underscore or a dot
So something like this could work CC:.*[a-zA-Z0-9-_.]+#[a-zA-Z0-9-_.]+. Here I added in CC:.* in the front which makes it so the regex will only grab the line that has CC in it.
.* just means "0 or more of any character"
It's broken down into two parts:
. - a "dot" indicates any character
* - means "0 or more instances of the preceding regex token"
From: What does .* do in regex?
EXAMPLE USE
CC:.*[a-zA-Z0-9-_.]+#[a-zA-Z0-9-_.]+ will grab the line that has a CC: in the front of it.
You would then do a secondary regex of just [a-zA-Z0-9-_.]+#[a-zA-Z0-9-_.]+ with out the CC: identifier to extract each email from the line separately.
Then just do this for each of the three lines you want to capture (to and from).
The regex used is this one: https://regex101.com/r/KIbf1T/1

Negate the output of the regex pattern [closed]

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 last year.
Improve this question
I want to negate the outcome of the regex pattern, so that it should return everything except the regex outcome.
Sample String:
SMTP:test.abc#xyz.com;smtp:test.123#xyz.biz;sip:test.123#xyz.biz
I have written a below regex which gives output as- test.abc#xyz.com
(?<=SMTP:)(.*?)(?=;)
Now i want everything except the above outcome i.e
SMTP:;smtp:test.abc#xyz.biz;sip:test.abc#xyz.biz
I am trying to negate but it is not working.
Any help is much appreciated.
It might be overcomplicated, but if you need multiline matching and a smtp account can be in the beginning of a line, this:
(SMTP:)|(;[^(SMTP)]*)|(^[^(SMTP)]*)
would match:
SMTP:
anything after a ; up until another SMTP
anything at the beginning of a line (no need of ;) up until another SMTP
Have a look at some tests here.
This can break down if an email name contains SMTP in it, but I hope you won t have any.
Another approach is use your matching regex, (?<=\SMTP:)(.*?)(?=\;), and keep deleting what it matches from the string.

How to remove certain prefix using regex [closed]

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 1 year ago.
Improve this question
My User data can come in any of the following 3 ways -
user="dc\AAA", user="BBB", user=CCCC,
Now, the bottom two I am able to extract it easily but issue comes when user data has an additional prefix of "dc" to it
I am trying to remove that prefix using regex and format all user data in single regex as below, but the unable to do so
user=AAA user=BBB user=CCC
Can someone please help.
This regex should do the work: (?:.*\\)?(.*).
Let's split this regex into parts:
(?: ) - A non-capturing group
.*\\ - Any characters many times, trailing by backslash
? (after the brackets) indicates the data in the brackets may occur once or not at all
(.*) Any characters
Overall - Capturing the data after the backslash if exists
I suggest using this amazing website for trying regex

Regex to remove popular email domains like gmail, hotmail for user signup [closed]

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 2 years ago.
Improve this question
I basically want new user to only sign up via company emails now that might be a bit impossible with all the options so I was just thinking of using regex to do a match check on the top 15 emails (https://email-verify.my-addr.com/list-of-most-popular-email-domains.php) gmail, yahoo, hotmai, aol. Does anyone have a regex for this?
Instead of regex, you can consider writing a function like this.
List<String> top15Domains = ['gmail.com', 'yahoo.com'];
bool isValidEmail(String email){
int index = email.indexOf('#');
if(index == -1){
return false;
}
String domain = email.substring(index + 1);
return !top15Domains.contains(domain);
}
A simple Regex would be checking for a match in the ending of the email address.
#(hotmail.com|gmail.com)$
You would need to exclude any emails that match this pattern. Add email domains separated by a |. The $ sign signifies that the Regex searches for the ending of the word. Make sure you Trim() the address from white-space characters in the end.
Note: This Regex Code is case sensitive so make sure you set the email ToLower() or run Regex in case insensitive mode(depending of the language you are using).
You can test your regex in various sites. https://regexr.com is the one i am currently using

Regex for email address without characters validation [closed]

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
I need a regex that will check (if email is like a#b.cc:
email must have # and . (must have both). I refer to the whole string that must contain # and at least one dot.
1st word of email must have 1+ char
the domain name between # and . must be 1+ char
TLD must be 2+ char
I made regex like .+#.+\. but it's not the one, I know. I am bad in regex as I use it so rarely.
Can anyone help me?
It's not clear if you are matching an email in the middle of a paragraph of text, or matching an already extracted string. I am assuming the latter, and anchoring the match to start and end of line...
/^.+#.+\.[^.]{2,}$/
p.s. using regex to validate emails is complex: http://www.regular-expressions.info/email.html