java如何用正则表达式提取#之间的字符串。例如cc#aaaaa#jdi#bbbbb#ji,需要提取aaaaa和bbbbb两个字符串。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何用正则表达式提取#之间的字符串。例如cc#aaaaa#jdi#bbbbb#ji,需要提取aaaaa和bbbbb两个字符串。相关的知识,希望对你有一定的参考价值。

Pattern p=Pattern.compile("#.*#");
Matcher m=p.matcher(strline);
int count=0;
int index=0;
while(m.find())
System.out.println(m.group(index));
index++;


这样做的结果是,结果是将第一个#和最后一个#匹配到了一起,结果是#aaaaa#jdi#bbbbb#,求解!

要提取#之间的字符串你的正则表达式有点问题,应该用#(.*?)#

你提取正则表达式的数据也有问题,我帮你改正了,你看看吧.

完整的Java程序如下:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class H 

 public static void main(String[] args) 

  String strline="cc#aaaaa#jdi#bbbbb#ji";

  Pattern p=Pattern.compile("#(.*?)#");  

  Matcher m=p.matcher(strline);  

  while(m.find())   

   System.out.println(m.group(1));   

  

 

运行结果:

aaaaa
bbbbb

参考技术A package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JButtonTest

public static void main ( String args[] )

String regex = "#([^#]+)#";
String strline = "cc#aaaaa#jdi#bbbbb#ji";
Pattern p = Pattern.compile (regex);
Matcher m = p.matcher (strline);
while (m.find ())

System.out.println (m.group (1));


追问

果然是正则表达式的规则不熟悉。请问()和[]的意图?

追答

() 表分组,里面数字表几组

[] 表可选,里面字符表几种

本回答被提问者采纳

如何用shell提取文件中指定的字符串

cut命令

用法: cut 参数 文件名
说明:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
更多参数请参考:cut - -help
-b用法:
以字节为单位,指定相应的字节输出,由于一个英文字符只占用一个字节,所以对英文字符可以与-c等价,但是占用多个节编码的字符不适用,比如中文;
文件内容:

$ cat test.txt
1234567890
ABCDEFGHIJ
abcdefghij
hello wrold!

指定文件中每行的第1,3到7个字符输出:

cut -b 1,3-7 test.txt
134567
ACDEFG
acdefg
hllo w

-n表示1到前n个字符,n-表示从n开始的所有字符
打印前两个字符和从第8个开始的字符

$ cut -b -2,8- test.txt
12890
ABHIJ
abhij
herold!

中文:
文件内容:

$ cat test1.txt
我们好像在哪见过
你记得吗?
好像那是一个春天!
参考技术A 通过grep或者awk或者sed等命令工具

以上是关于java如何用正则表达式提取#之间的字符串。例如cc#aaaaa#jdi#bbbbb#ji,需要提取aaaaa和bbbbb两个字符串。的主要内容,如果未能解决你的问题,请参考以下文章

c语言下如何用正则或者字符串查找匹配特定字符串并提取出来

批处理如何用正则提取字符串中间的数字,和结尾的数字

如何用excel中的VBA的正则表达式提取出字符串?

js 正则表达式提取某一段字符

java字符串里面如何用正则表达式去掉汉字?

如何用正则表达式去除一个字符串里面的数字和小数点以外的字符