正则表达式提取java
㈠ 请问怎么用java正则表达式提取以下文本中指定的内容
//回答完毕,采纳即可
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.util.Scanner;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassDrinks
{
publicstaticfinalStringLINE=System.getProperty("line.separator");
publicstaticvoidmain(String[]args)
{
try
{
Stringresult="";
Scannerscanner=newScanner(newFile("data.txt"));
while(scanner.hasNextLine())
{
Stringline=scanner.nextLine();
result+=line+LINE;
}
StringuserRegex="[\s\S]*%user(\s+%\w+){5}[ \s]+([\d\.]+)\s[\s\S]*";
System.out.println("%user想对应的数据:"+result.replaceAll(userRegex,"$2"));
StringutilRegex="sda.*\s([\d\.]+)";
Patternpattern=Pattern.compile(utilRegex);
Matchermatcher=pattern.matcher(result);
while(matcher.find())
{
System.out.println("%util相对应的数据:"+matcher.group(1));
}
StringuseRegex="use:\s*([\d\.%]+)";
pattern=Pattern.compile(useRegex);
matcher=pattern.matcher(result);
while(matcher.find())
{
System.out.println("use相对应的数据:"+matcher.group(1));
}
}
catch(FileNotFoundExceptione)
{
e.printStackTrace();
}
}
}
㈡ java正则表达式如何获取字符串中所有匹配内容
java正则表达式提取需要用到Matcher类。
㈢ java正则表达式截取字符串
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassHello{
publicstaticvoidmain(String[]args){
Stringre="\[([^\]]+)\]";
Stringstr="[您好],abcdefg,[abc]";
Patternp=Pattern.compile(re);
Matcherm=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
}
}
将m.group(1)组建成你自己想要的格式就好了
㈣ 使用java正则表达式提取文件名问题,怎么解决
用fname举个例子
StringfName="G:\Java_Source\navigation_tigra_menu\demo1\img\lev1_arrow.gif";
fName=fName.trim();
Stringtemp[]=fName.split("\\");/**split里面必须是正则表达式,"\"的作用是对字符串转义*/
//temp[]=[G:,Java_Source,navigation_tigra_menu,demo1,img,lev1_arrow.gif]
System.out.println("temp[]="+Arrays.toString(temp));
fName=temp[temp.length-1];
System.out.println("方法三:fileName="+fName);
㈤ java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串
利用正则表达式从给定的字符串中取出符合匹配规则的字符串的Java程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class E {
public static void main(String[] args) {
Pattern p = Pattern.compile("[A-Za-z]+");//设定匹配规则为取出字符串中的字母
Matcher m = p.matcher("12sifiwq820aufu");//与字符串匹配
while(m.find()){
System.out.println(m.group());
}
}
}
运行结果:
sifiwq
aufu
㈥ 用java正则表达式提取java程序中的注释
正则的效率非常低,有很多不用正则的好方法:
一,示例 某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正则表达式从文档中提取需要的信息
给你代码,在一个文件夹中找那个文件中有人要查找的字符串.
-------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test2 {
public static void main(String args[]) throws Exception {
execute(new File("H:\\test"), "find");
}
public static void execute(File root, String findStr) throws Exception {
File[] files = root.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
continue;
}
if (fileHandler(files[i], findStr)) {
System.out.println(files[i].getName());
}
}
}
public static boolean fileHandler(File file, String findStr)
throws Exception {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
boolean result = false;
while (br.ready()) {
String line = br.readLine();
result = findCount(line, findStr);
if (result) {
break;
}
}
br.close();
fr.close();
return result;
}
public static boolean findCount(String line, String findStr) {
Pattern p = Pattern.compile(findStr);
Matcher m = p.matcher(line);
int count = 0;
while (m.find()) {
if (!"".equals(m.group())) {
return true;
}
}
return false;
}
}
㈧ JAVA 正则表达式 提取数据
类似这种,就不要用什么正则表达式了。
直接String[] ss = str.split(",");
Map m= new HashMap();
for(String s:ss){
String [] ts = s.split(":");
m.put(ts[0],ts[1]);
}
然后你想用name属性,就直接m.get("name");就取到了
㈨ java正则表达式如何获取字符串中所有匹配内容
java正则表达式如何获取字符串中所有匹配内容
java正则表达式提取需要用到Matcher类。
正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern
= Pattern.pile("(\d)[^\d]*$")
Matcher matcher
= pattern.matcher(s)
if(matcher.find())
System.out.println
(matcher.group(1)); } }
如何获取字符串中匹配到正则表达式的子串开
mport java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X"; 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Pattern pattern = Pattern.pile("(\d)[^\d]*$");Matcher matcher = pattern.matcher(s);if(matcher.find())System.out.println(matcher.group(1));}}
正则表达式获取字符串
string pattern=@"<font>(.+?)</font>"
取分组 Match.group[1]
JS如何用正则表达式 获取字符串内的匹配部份?
实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test
实现的机制:通过replace的回调函数获取。
可以通过下面的代码获取匹配部分
var str = "abcdefgname='test'sddfhskshjsfsjdfps";
var reg = /name='((w|-|s)+)/ig;
str.replace(reg, function() {
console.log(arguments.length); 5
console.log(arguments[1]);test
});
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
正则表达式如何获取被匹配字符串的匹配组名
java正则提取需要用到Matcher类,下面给出案例示例供参考
需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来
在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern = Pattern.pile("(\d)[^\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
关于Matcher 中的几个方法说明:
Mathcer.start()
Matcher.end()
Matcher.group()
当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串
示例代码如下,具体功能请参考注释
Pattern p=Pattern.pile(“d+”);
Matcher m=p.matcher(“aaa2223bb”);
m.find();匹配2223
m.start();返回3
m.end();返回7,返回的是2223后的索引号
m.group();返回2223
Mathcer m2=p.matcher(“2223bb”);
m2.lookingAt(); 匹配2223
m2.start(); 返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end(); 返回4
m2.group(); 返回2223
Matcher m3=p.matcher(“2223”); 如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出错,因为不匹配返回false
m3.matches(); 匹配整个字符串
m3.start(); 返回0
m3.end(); 返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串
m3.group(); 返回2223
另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.
示例如下:
Pattern p=Pattern.pile(“([a-z]+)(d+)”);
Matcher m=p.matcher(“aaa2223bb”);
m.find(); 匹配aaa2223
m.groupCount(); 返回2,因为有2组
m.start(1); 返回0 返回第一组匹配到的子字符串在字符串中的索引号
m.start(2); 返回3
m.end(1); 返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.end(2); 返回7
m.group(1); 返回aaa,返回第一组匹配到的子字符串
m.group(2); 返回2223,返回第二组匹配到的子字符串
注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。
C# 正则表达式获取字符串?
针对你的问题:
<aa>是给数组命名
(?<name>subexpression)
其中name是有效的组名称,而subexpression是任何有效的正则表达式模式。 name不得包含任何标点符号字符,并且不能以数字开头。
这个方式相当于下面这个表达式
"(?<!0-9a-zA-Z)([0-9]|[a-z]|[A-Z]){1,}"
java正则表达式如何获取分组匹配内容
String str = "我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.";
d 表示0-9 任意一个数字 后面有+号 说明这个0-9单个数位出现一到多次 比如21312314
String reg = "\d+";
Pattern是一个正则表达式经编译后的表现模式。
Pattern pattern = Pattern.pile (reg);
Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
Matcher matcher = pattern.matcher (str);
只有执行了find()方法 后,状态机matcher才是真正开始进行匹配工作的!
while (matcher.find ())
{
matcher.group()返回匹配到的子字符串
System.out.println (matcher.group ());
}
}
Java正则表达式匹配是否存在字符串。
正则表达式为:.*a.*b.*c.*
package .test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
/**
* @param args
*/
public static void main(String[] args) {
TODO Auto-generated method stub
String source = "abcdefg
" +
"uaibec
" +
"wabbcd
" +
"adb
" +
"acb";
String regex = "(.*a.*b.*c.*)";
Pattern pattern = Pattern.pile(regex,Pattern.MULTILINE);
Matcher matcher = pattern.matcher(source);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
你可以直接复制出来,运行一下就可以了
㈩ java正则表达式如何获取字符串中所有匹配内容
一、正则表达式基础知识
1.1 句点符号
在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,可以用正则表达式搜索全部内容。要构造出这个正则表达式,可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
1.3 “或”符号
如果除了上面匹配的所有单词之外,还想要匹配“toon”,那么,可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组。
1.4 表示匹配次数的符号
下表显示了正则表达式的语法:
表 1.1 正则表达式语法