您的位置:首页 > 职场人生

黑马程序员__正则表达式

2015-03-14 00:01 169 查看
------Java培训期待与您交流! -------

正则表达式
一、概述
1.简介:含有一些具有特殊意义的字符组成的字符串
2.作用:判断句子中,某一字符串是否符合某一格式
3.优势:简化对某一特定格式的操作
4.缺点:对代码的阅读性较差
二、元字符
具有特殊含义的字符
元字符正则表达式中的写法含义
."."代表任意一个字符
\d"\\d"代表0~9任何一个数字
\D"\\D"代表任何一个非数字字符
\s"\\s"代表空白字符,如‘\t’‘\n’
\s"\\S"代表非空白字符
\w"\\w"代表可用作标识符的字符,但不包含‘$’
\w"\\W"代表不可用于标识符的字符
\p{Lower}"\\p{Lower}"代表小写字母{a~z}
\p{Upper}"\\p{Upper}"代表大写字母{A~Z}
\p{ASCII}"\\p{ASCII}"ASCII字符
\p{Alpha}"\\p{Alpha}"字母字符
\p{Digit}"\\p{Digit}"十进制字数字,即[0~9]
\p{Alnum}"\\p{Alnum}"数字或字母字符
\p{Punct}"\\p{Punct}"标点符号:!"#$%&'()*+-/:;<=>@[\]^_{}|~
\p{Greph}"\\p{Greph}"可见字符:[\p{Alnum}\p{Punct}]
\p{Print}"\\p{Print}"可打印字符:[\p{Graph}\x20]
\p{Blank}"\\p{Blank}"空格或制表符:[\t]
\p{Cntrl}"\\p{Cntrl}"控制字符

-------------
限定修饰符
限定修饰符意义示例
?0次或1次A
*0次或多次A*
+一次或多次A+
{n}正好出现n次A{2}
{n,}至少出现n次A{3,}
{n,m}出现n到m次之间A{2,5}
#---------------------------------------------------
三、利用正则表达式编写的工具
去除txt记事本中匹配字串符的窗口程序
关键代码如下:
源文件及目标文件路径的选取
textField_1.setColumns(10);
JButton button_1 = new JButton("\u9009\u62E9\u8DEF\u5F84");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser= new JFileChooser();
FileNameExtensionFilter filer = new FileNameExtensionFilter(".txt","txt");
chooser.setFileFilter(filer);
chooser.setMultiSelectionEnabled(false);
int result = chooser.showSaveDialog(getContentPane());
if (result == JFileChooser.APPROVE_OPTION) {
objectFile = chooser.getSelectedFile();
if (!objectFile.getName().endsWith(".txt")) {
if (!objectFile.exists()) {
File temFile = new File(objectFile.getParent(),objectFile.getName()+".txt");
objectFile = temFile;
}
else {
JOptionPane.showMessageDialog(getContentPane(), "请选择文本文件或输入名称","",JOptionPane.WARNING_MESSAGE);
return;
}
}
textField_1.setText(objectFile.getAbsolutePath());
}
}
});


#---------------------------------
文件类型的判断以及正则表达式的匹配判断
JButton button_2 = new JButton("\u8F6C\u6362");
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String tem = textField_2.getText();
if (sourceFile == null) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(getContentPane(), "请选择源文件","",JOptionPane.WARNING_MESSAGE);
return;
}
if (objectFile == null) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(getContentPane(), "请选择目标文件","",JOptionPane.WARNING_MESSAGE);
return;
}
if (tem.equals("") ) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(getContentPane(), "请输入正则表达式","",JOptionPane.WARNING_MESSAGE);
return;
}
if (!objectFile.exists()) {
try {
objectFile.createNewFile();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
FileWriter writer=null;
System.out.println(tem);
try {
writer = new FileWriter(objectFile);
scanner = new Scanner(sourceFile);
while(scanner.hasNextLine()) {
StringBuilder str = new StringBuilder(scanner.nextLine());
scan = new Scanner(str.toString());
String num = scan.findInLine(tem.trim());
while (num != null) {
str.delete(str.indexOf(num), str.indexOf(num)+num.length());
num = scan.findInLine(tem.trim());
}
str.append("\r\n");
writer.write(str.toString());
}
writer.flush();
} catch (FileNotFoundException e2) {
// TODO 自动生成的 catch 块
e2.printStackTrace();
} catch (IOException e3) {
// TODO 自动生成的 catch 块
e3.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e4) {
// TODO 自动生成的 catch 块
e4.printStackTrace();
}
scanner.close();
scan.close();
}
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: