import java.util.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main
(String[] args
) { try {
while ((line = reader.readLine()) != null) {
if (line.startsWith("1")) Problem1(reader, writer);
else if (line.startsWith("2"))Problem2(reader, writer);
else if (line.startsWith("3"))Problem3(reader, writer);
else if (line.startsWith("4"))Problem4(reader, writer);
else if (line.startsWith("5"))Problem5(reader, writer);
else if (line.startsWith("7"))Problem7(reader, writer);
}
reader.close();
writer.close();
e.printStackTrace();
}
}
Pattern pattern = Pattern.compile("\\b[A-Za-z0-9._-]+@[A-Za-z-]+\\.[A-Z|a-z]{2,}\\b");
writer.write("1\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
Matcher matcher = pattern.matcher(s);
if(matcher.matches())writer.write("valid email"+"\n");
else writer.write("invalid email"+"\n");
}
writer.write("x\n");
}
Pattern pattern = Pattern.compile("^(\\(\\d{3}\\)|\\d{3})[-.\\s]?\\d{3}[-.\\s]?\\d{4}$");
writer.write("2\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
Matcher matcher = pattern.matcher(s);
if(matcher.matches())writer.write("valid phone number"+ "\n");
else writer.write("invalid phone number"+ "\n");
}
writer.write("x\n");
}
Pattern pattern = Pattern.compile("((^\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}$)|(^\\d{1,2}[-/]\\d{1,2}[-/]\\d{4}$))");
writer.write("3\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
Matcher matcher = pattern.matcher(s);
if(matcher.matches())writer.write("valid date"+ "\n");
else writer.write("invalid date"+ "\n");
}
writer.write("x\n");
}
Pattern pattern = Pattern.compile("((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$");
writer.write("4\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
Matcher matcher = pattern.matcher(s);
if(matcher.matches())writer.write("valid IP address"+ "\n");
else writer.write("invalid IP address"+ "\n");
}
writer.write("x\n");
}
Pattern pattern = Pattern.compile("^[a-zA-Z_][a-zA-Z0-9_]*$");
writer.write("5\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
Matcher matcher = pattern.matcher(s);
if(matcher.matches())writer.write("valid C++ variable name"+ "\n");
else writer.write("invalid C++ variable name"+ "\n");
}
writer.write("x\n");
}
Pattern pattern = Pattern.compile("((a(aa|bb|abab|baba)*b(aa|bb|abab|baba)*)|((bb|aa|abab|baba)*(ab|ba)(bb|aa|abab|baba)*)|(b(aa|bb|abab|baba)*a(aa|bb|abab|baba)*))");
writer.write("7\n");
while ((s = reader.readLine()) != null && !s.equals("end")) {
writer.write('*'+s+"*\n");
Vector<String> vec1 = new Vector<String>();
Vector<Integer> vec2 = new Vector<Integer>();
Vector<Integer> vec3 = new Vector<Integer>();
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
String matchedSubstring
= matcher.
group(); int startIdx = matcher.start();
int endIdx = matcher.end();
vec1.add(matchedSubstring);
vec2.add(startIdx);
vec3.add(endIdx);
}
writer.write("number of matched substrings: "+vec1.size()+'\n');
for(int i=0;i<vec1.size();i++){
writer.write("matched substring: "+vec1.get(i)+'\n');
writer.write("start index: "+vec2.get(i)+", "+"end index: "+vec3.get(i)+'\n');
}
}
writer.write("x\n");
}
}