I am using python.
The pattern is:
re.compile(r'^(.+?)-?.*?(.+?)')
The text like:
text1 = 'TVTP-S2(xxxx123123)' text2 = 'TVTP(xxxx123123)'
I expect to get TVTP
Advertisement
Answer
Another option to match those formats is:
^([^-()]+)(?:-[^()]*)?([^()]*)
Explanation
^
Start of string([^-()]+)
Capture group 1, match 1+ times any character other than-
(
and)
(?:-[^()]*)?
As the-
is excluded from the first part, optionally match-
followed by any char other than(
and)
([^()]*)
Match from(
till)
without matching any parenthesis between them
Example
import re regex = r"^([^-()]+)(?:-[^()]*)?([^()]*)" s = ("TVTP-S2(xxxx123123)n" "TVTP(xxxx123123)n") print(re.findall(regex, s, re.MULTILINE))
Output
['TVTP', 'TVTP']