POJ 3332
很清晰的正则表达式口味,Java.Pattern水之……
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
static Scanner cin=new Scanner(System.in);
static PrintWriter cout=new PrintWriter(System.out,true);
static public void main(String args[])
{
String a;
int tcase=cin.nextInt();
while(tcase-->0)
{
a=cin.next();
if(Pattern.compile("([+-]?[0-9]+)([/.][0-9]+)?([Ee][+-]?[0-9]+)?").matcher(a).matches()) cout.println("LEGAL");
else cout.println("ILLEGAL");
}
}
}
HDU 2279
重定义:星号为任意个任意小写字母,问号为一个任意小写字母,转化成标准正则表达式的模式,水之……
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
static Scanner cin=new Scanner(System.in);
static PrintWriter cout=new PrintWriter(System.out,true);
static public void main(String args[])
{
int n,m;
String a[]=new String[10001],b[]=new String[101];
while(cin.hasNext())
{
n=cin.nextInt();
m=cin.nextInt();
for(int i=0;n>i;i++) a[i]=cin.next();
for(int i=0;m>i;i++)
{
b[i]=cin.next();
b[i]=Pattern.compile("[/?]").matcher(b[i]).replaceAll("[a-z]");
b[i]=Pattern.compile("[/*]").matcher(b[i]).replaceAll("[a-z]*");
}
for(int i=0;m>i;i++)
{
int cnt=0;
for(int j=0;n>j;j++)
{
if(Pattern.compile(b[i]).matcher(a[j]).matches()) cnt++;
}
if(cnt>0) cout.println(cnt);
else cout.println("Not match");
}
}
}
}
HDU 4018
去掉双左斜线左边的和单左斜线或冒号右边的,输出中间那段,用Java.Pattern的替换函数水之……
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
static Scanner cin=new Scanner(System.in);
static PrintWriter cout=new PrintWriter(System.out,true);
static public void main(String args[])
{
String a;
int tcase=cin.nextInt(),times=1;
while(tcase-->0)
{
a=cin.next();
a=Pattern.compile(".*(//)").matcher(a).replaceAll("");
a=Pattern.compile("[/:].*").matcher(a).replaceAll("");
cout.println("Case #"+times+++": "+a);
}
}
}