问题
I have to write a Regex to fetch Email Address from a sentence. I want it to be returned with Group 1 only.
Regex:
\[mailto:(.+)\]|<(.+@.+\..+)>
Input String:
Hello my Email Address is <foo@hotmail.com> - Return foo@hotmail.com as Group1.
Hello my Email Address is [mailto: foo@hotmail.com] - Return foo@hotmail.com as Group2.
I want if any of the string matches then it should be returned in Group1.
Is there any way to do this?
回答1:
You may use regular expression:
(?=\S+@)([^<\s]+@.*(?=[>\]]))
(?=\S+@)
Positive lookahead, assert that what follows is any non-whitespace characters followed by@
.([^<\s]+@.*(?=[>\]]))
Capture group. Capture any non-whitespace, non^
character followed by@
, and anything up to either a]
or>
character.
You can test the regular expression here.
来源:https://stackoverflow.com/questions/51542531/return-only-one-group-with-or-condition-in-regex