9 个解决方案
#1
这种情况不用正则。手工写,格式这么整齐,用正则属于浪费。
#2
是全部都是這種格式?
那 ^[0-9][0-9][0-9][0-9]\:$
先把0021:拿出來和他match一下 然后true的話就replace
那 ^[0-9][0-9][0-9][0-9]\:$
先把0021:拿出來和他match一下 然后true的話就replace
#3
覺得沒什么必要用正則的。。。除非你老大要求你這么做。。。
#4
\d{4}:
#5
比如用substring()切一下或者split()之類的。。。
又不是驗證 干什么非要正則啊。。。
又不是驗證 干什么非要正則啊。。。
#6
用 string.replaceAll("\d{4}:" , ""); , 提示invalid escape sequence, 怎么回事?
#7
不用正则的话,System.out.println(str.substring(5));
用的话,System.out.println(str.replaceAll("\\d{4}:",""));
你得少了个\
用的话,System.out.println(str.replaceAll("\\d{4}:",""));
你得少了个\
#8
行号前面是否有空格?冒号后面的空格是否需要去掉等等之类的说明一下,这样写出的正则表达式才能有用武之地。
#9
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
try {
Pattern pattern = Pattern.compile("(?m)^[ \t]*\\d{4}:[ \t]*");
String line = System.getProperty("line.separator");
br = new BufferedReader(new FileReader("1.txt"));
bw = new BufferedWriter(new FileWriter("1_.txt"));
String str = null;
while((str = br.readLine())!=null) {
str = replace(pattern, str);
bw.write(str + line);
}
}catch(IOException e) {
e.printStackTrace();
}finally{
close(bw);
close(br);
}
System.out.println("finished.");
}
private static String replace(Pattern pattern, String str) {
Matcher matcher = pattern.matcher(str);
return matcher.replaceAll("");
}
private static void close(Closeable closeable) {
if(closeable != null) {
try {
closeable.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件内容
0001: Line 1, 0001: Line 1
0002: Line 2, 0002: Line 2
0003: Line 3, 0003: Line 3
0004: Line 4, 0004: Line 4
#1
这种情况不用正则。手工写,格式这么整齐,用正则属于浪费。
#2
是全部都是這種格式?
那 ^[0-9][0-9][0-9][0-9]\:$
先把0021:拿出來和他match一下 然后true的話就replace
那 ^[0-9][0-9][0-9][0-9]\:$
先把0021:拿出來和他match一下 然后true的話就replace
#3
覺得沒什么必要用正則的。。。除非你老大要求你這么做。。。
#4
\d{4}:
#5
比如用substring()切一下或者split()之類的。。。
又不是驗證 干什么非要正則啊。。。
又不是驗證 干什么非要正則啊。。。
#6
用 string.replaceAll("\d{4}:" , ""); , 提示invalid escape sequence, 怎么回事?
#7
不用正则的话,System.out.println(str.substring(5));
用的话,System.out.println(str.replaceAll("\\d{4}:",""));
你得少了个\
用的话,System.out.println(str.replaceAll("\\d{4}:",""));
你得少了个\
#8
行号前面是否有空格?冒号后面的空格是否需要去掉等等之类的说明一下,这样写出的正则表达式才能有用武之地。
#9
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
try {
Pattern pattern = Pattern.compile("(?m)^[ \t]*\\d{4}:[ \t]*");
String line = System.getProperty("line.separator");
br = new BufferedReader(new FileReader("1.txt"));
bw = new BufferedWriter(new FileWriter("1_.txt"));
String str = null;
while((str = br.readLine())!=null) {
str = replace(pattern, str);
bw.write(str + line);
}
}catch(IOException e) {
e.printStackTrace();
}finally{
close(bw);
close(br);
}
System.out.println("finished.");
}
private static String replace(Pattern pattern, String str) {
Matcher matcher = pattern.matcher(str);
return matcher.replaceAll("");
}
private static void close(Closeable closeable) {
if(closeable != null) {
try {
closeable.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件内容
0001: Line 1, 0001: Line 1
0002: Line 2, 0002: Line 2
0003: Line 3, 0003: Line 3
0004: Line 4, 0004: Line 4