import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?!^\\*)+?(?:^\\W*\\r*)(?<country>[\\w]{0,1}[^\\r\\n])(?:[^\\w*]+)(?<channel>[\\w?,'\\\"\\-_ ]*(?<![^\\w?!])).*?(?<tag>\\w*$)|(?<channel2>^[\\w?,'\\\"\\-_]+(?<![^\\w?!]))[^\\w\\r\\n\\*\\t\\f\\v]*(?<tag2>\\w+$)?";
final String string = "*** jeo ****\n"
+ "UK -+- \"Channel Name' | HD\n"
+ "Channel | FHD\n"
+ "zeebo\n"
+ "BBC\n"
+ "US = LONG chanell NaME | FHD\n"
+ "US - SkySports | HD\n"
+ "ES | Chan-nel Name HD\n"
+ "IT| My long super channel Name | HD\n"
+ "ks lets sae my channel | hd\n"
+ "JS: My channel Name | HD\n"
+ "JS: Sky Cinema Action\n"
+ "UK: Sky Cinema Gold | FHD\n"
+ "JA: Some other channel :HD\n"
+ "UK: this channel name ||jdh\n"
+ "AH: does it work for all?? |HD\n"
+ "UJ: Dont call me dave\n"
+ "****** My service Provider\n"
+ "DE: Doesn't handle weird _String | FHD\n"
+ "UK: so howcanedo | HD\n"
+ "KD: 5g0fff9 98hf9 ?|FHD\n"
+ "UR: this is okay mostly | FHD\n"
+ "EE) but does it always work? | vip\n"
+ "****** My service Provider ****vip\n"
+ "re: hahahaahahaahahaha 32 hd | hd\n"
+ "jg: will it work | dd\n"
+ "ur: rte1 | FHD\n"
+ "IR: M-Y CHAN-NEL NAME |VIP\n"
+ "IR: MY CHANNEL NAME | FHD\n"
+ "le let me get this channel\" |FHD\n"
+ "UK MY CHANNNEL NAME | FHD\n"
+ "el haha get my name | jfh";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html