java中的正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的正则表达式相关的知识,希望对你有一定的参考价值。
package heros;
import java.util.Scanner;
public class zhengzebiaodashi
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
String accounts="[1781969418] 10 ";
String password="[18384244066] 11 ";
while(true)
System.out.println("请输入帐号:");
String ac=sc.nextLine();
System.out.println("请输入密码:");
String pa=sc.nextLine();
if(ac.matches(accounts)&&pa.matches(password))
System.out.println("密码正确");
break;
else
System.out.println("密码错误");
我按照上面的正则表达式输入后怎么是显示的是密码错误呢???
其中.*表示0个或0以上多个任意字符
.*?表示0个或0以上多个任意字符的非贪婪匹配,就是假如一个句子中有多个style,它匹配距离最近的那个style,同理后面的.*?匹配距离最近的双引号
$1表示反向引用,它代表的是正则表达式中的第一个小括号所括起来的分组的内容,如果有两个小括号括起来的内容,则分别用$1,$2表示它们(在替换后的字符串中)
完整的Java程序如下
123456public class CC public static void main(String[] args) String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\" title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>"; System.out.println(s.replaceAll("(<img.*?)style=\".*?\"", "$1"));
运行结果
<img src="file/img/2016/12-28/1234-25521482893088459.jpg" title="1234.jpg" alt="" width="396" height="271" /> 参考技术A 首先要问你几个问题:
你要的目的是什么?
你知道正则表达式是做什么的?
你会写正则吗?
你输入的是什么? 参考技术B 你要匹配什么样的密码?追问
就是我上面输入的String accounts="[1781969418] 10 " 和String password="[18384244066] 11 "; 这两个
追答你写的正则根本就是错的,你直接说你要匹配什么样的密码
追问那括号里面的内容该怎么写出来呢
用java正则表达式提取java程序中的注释
参考技术A 正则的效率非常低,有很多不用正则的好方法:一,示例 某java程序
比如说一个Test2.java,将其保存在C盘根目录下,代码内容如下
/**
* @author xxx
*
*/
public class Test2
/* main method */
public static void main(String[] args)
//a
int a =5;
//b
int b =5;
//a+b
System.out.println(a+b);
二,提取注释程序,将所有注释放到一个List里面,最后打印输出:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Test
private static final String javaFilePath = "C:/Test2.java";
public static void main(String[] args) throws IOException
List<String> comments = new ArrayList<String>();
BufferedReader bfr = new BufferedReader(new InputStreamReader(new FileInputStream(javaFilePath)));
String line=null;
while((line=bfr.readLine())!=null)
line = line.trim();
if(line.startsWith("//"))
comments.add(line);
else if(line.startsWith("/*")&&line.endsWith("*/"))
comments.add(line);
else if(line.startsWith("/*")&&!line.endsWith("*/"))
StringBuffer multilineComment = new StringBuffer(line);
while((line=bfr.readLine())!=null)
line = line.trim();
multilineComment.append("\n").append(line);
if(line.endsWith("*/"))
comments.add(multilineComment.toString());
break;
bfr.close();
for(int i=0;i<comments.size();i++)
System.out.println("第"+(i+1)+"处注释: ");
System.out.println(comments.get(i));
三,输出结果:
第1处注释:
/**
* @author xxx
*
*/
第2处注释:
/* main method */
第3处注释:
//a
第4处注释:
//b
第5处注释:
//a+b
以上是关于java中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章