请教(正则表达式)用 正则表达式可以做到 查找一个字符串在另外个字符串中出现的次数吗?

teemai 2009-07-15 03:57:51
正则表达式只能查找比较第一个出现的字符串,返回true。。
怎么才能实现 然他继续查找呢比较?

我的思路是比较完一次后将原字符串中"cba"删除掉,然后执行第二次查找比较。。
有好点的方法实现我的思路吗(可以用charAt,比较烦)
希望大家提供点思路。谢谢!!!


我写的代码

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


public class comeoutNum {
public static int i = 0;

public static void printComeoutNum(String str){

String regEx = "cba"; //表示a或f
Pattern p = Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
i ++;
}
System.out.println("cba出现的次数为:" + i);

}
public static void main(String []args){
String A = new String("cbasdffdgasdcba");
printComeoutNum(A);
}

}





...全文
370 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
行舟 2009-07-15
  • 打赏
  • 举报
回复
晒下

public static void main(String[] args) {
String str= "qwertyuiopasdfghjklzxcvbnm1234567890";
// 以j打头的长度为2的字符!
String[] s=str.split("(j.{1})");
for(int i=0;i<s.length;i++){
// 出现次数为i
System.out.println(i);
}
}
ltandfyy 2009-07-15
  • 打赏
  • 举报
回复
可能说法不精确,严格的来说是不能出现正则表达式的特殊符号,如果出现要转义成普通的字符,这样split才能达到你要的那种效果
把"[0-9]"这样的字符串要变成"\\[0\\-9\\]"又是正确的了,如果操作,LZ再想想,因为我觉得LZ有些基础问题不太清楚,别人光说没用,查下JDK API是正确的选择。
teemai 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ltandfyy 的回复:]
可以是正则表达式的形式没错,也正是因为这个,我这里恰恰不能用正则表达式的性质,一旦被正则介入就会得出错误的结果,并不是说程序会报错。
比如String A = "123";而你想知道"[0-9]"这样一个字符串在"123"中出现的次数,用我的方法就不行,你想得到的是0,结果为3。
[/Quote]
呵呵,我理解错了!你说的很对!
谢谢
ltandfyy 2009-07-15
  • 打赏
  • 举报
回复
可以是正则表达式的形式没错,也正是因为这个,我这里恰恰不能用正则表达式的性质,一旦被正则介入就会得出错误的结果,并不是说程序会报错。
比如String A = "123";而你想知道"[0-9]"这样一个字符串在"123"中出现的次数,用我的方法就不行,你想得到的是0,结果为3。
teemai 2009-07-15
  • 打赏
  • 举报
回复
String regEx = "cba"; //表示a或f
* Pattern p = Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
i ++;
str = replaceFirst(regEx,"A"); //不知道为什么出错。说没有定义的方法。这明明是String包里的。
}
System.out.println("cba出现的次数为:" + i);


开始的想法。。
teemai 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ltandfyy 的回复:]
我这里的s就是LZ代码中的A,不过有个问题,"cba"这个字符串只能是普通字符串,不能是正则表达式的形式,否则我这段代码计算是错的。如果能保证,又图方便我觉得可以一试。
[/Quote]
JDK中String中的说明:
String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。


可以是正则表达式形式啊。


ltandfyy 2009-07-15
  • 打赏
  • 举报
回复
我这里的s就是LZ代码中的A,不过有个问题,"cba"这个字符串只能是普通字符串,不能是正则表达式的形式,否则我这段代码计算是错的。如果能保证,又图方便我觉得可以一试。
teemai 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ltandfyy 的回复:]
想了一个比较怪异的方法:
String[] ss = s.split("cba",-1);
System.out.println(ss.length-1);
ss.length-1就是cba出现的次数。
[/Quote]
厉害。。看了下JDK API。。String里居然有split这个好东西。。不错!!
ltandfyy 2009-07-15
  • 打赏
  • 举报
回复
想了一个比较怪异的方法:
String[] ss = s.split("cba",-1);
System.out.println(ss.length-1);
ss.length-1就是cba出现的次数。
teemai 2009-07-15
  • 打赏
  • 举报
回复
public static void main(String []args){
String A = new String("cbasdffdgasdcfdsbacba");
printComeoutNum(A);
}
teemai 2009-07-15
  • 打赏
  • 举报
回复
cba出现的次数应该为2
上面我想加个颜色的,不知道显示了代码。。
重新贴个代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class comeoutNum {
public static int i = 0;

public static void printComeoutNum(String str){

String regEx = "cba"; //表示a或f
Pattern p = Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
i ++;
}
System.out.println("cba出现的次数为:" + i);

}
public static void main(String []args){
String A = new String("sdffdgasdcfdsba");
printComeoutNum(A);
}

}



【实际-有功-无功控制器的动态性能】【两级电压源变流器VSC】【采用电流控制的实际无功功率控制器】【利用阿尔法-贝塔转换进行电流反馈】(Simulink仿真实现)内容概要:本文基于Simulink仿真平台,研究了两级电压源变流器(VSC)中实际有功与无功控制器的动态性能,重点实现了采用电流控制策略的无功功率控制器,并结合阿尔法-贝塔(α-β)坐标变换进行电流反馈控制。通过构建完整的VSC控制系统模型,分析了有功与无功功率的解耦控制机理,探讨了在不同工况下控制器对功率动态响应的调节能力,验证了电流闭环控制在提升系统稳定性与动态性能方面的有效性。该仿真模型可用于微电网、HVDC等电力电子系统的控制器设计与优化。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究人员、研究生及从事新能源并网、微电网控制的工程技术人员。; 使用场景及目标:①研究电压源变流器在有功/无功功率独立调控中的控制策略;②掌握基于α-β变换的电流反馈控制方法及其在Simulink中的建模与仿真技巧;③为构网型逆变器、微电网能量管理等实际工程项目提供控制器设计参考。; 阅读建议:建议读者结合Simulink仿真环境动手复现模型,重点关注电流环设计、坐标变换模块实现以及功率解耦控制的效果,通过调整控制器参数观察系统动态响应变化,深化对VSC控制原理的理解。
内容概要:斯普莱WFS7000S52AX是一款支持2.4G/5.8G双频段的工业级WiFi6无线车载AP,符合802.11a/b/g/n/ac/ax标准,采用4T4R MIMO架构,支持OFDMA、FastRoaming等先进技术,最大传输速率可达2974Mbps,具备超远覆盖能力(可达3000米以上)和≤1ms通信延迟。设备支持宽电压11-30V DC或POE供电,具备IP68防护等级和-45~85℃宽温工作能力,通过EMC、防雷浪涌、高低温等多项权威认证,适用于恶劣环境下的稳定运行。产品集成多种网络安全与管理功能,如VLAN、QoS、VPN、防火墙、巨量安全隧道、SNMP、SSH及多模式认证,并支持本地或云端集中管理、API对接和图形化配置,广泛应用于智慧物流、工业4.0、AGV/AMR小车、智能驾培、车载船载视频传输等场景。; 适合人群:从事工业无线网络建设、物联网系统集成、智能交通与物流自动化领域的工程师和技术人员,以及需要高可靠性无线通信解决方案的研发和运维人员。; 使用场景及目标:①实现复杂电磁环境下稳定高效的无线桥接与全覆盖;②满足高速移动设备(如AGV、穿梭车、无人机)的低延迟、零丢包漫游需求;③构建高安全、可远程集中管理的大规模工业无线网络; 阅读建议:本文档技术参数详实,建议结合具体项目需求重点查阅射频性能、供电方式、防护等级及软件功能配置部分,并参考官方云平台和API接口文档进行系统集成与调试。
内容概要:本文介绍了WiFiSupply斯普莱WFS7000AN 5GHz全频段300M电信工业级分体式无线网桥的产品特性、技术参数及广泛应用场景。该设备支持TDMA时分多址技术,具备强抗干扰能力、通信延迟≤1ms、最大发射功率27dBm/500mW、接收灵敏度达-96dBm,并采用MIMO 2T2R架构,支持4920-6100MHz全频段,单频带宽可达300Mbps,点对点实际吞吐量超过150Mbps。产品支持多种工作模式(如PTP、PTMP、WDS、Mesh等),具备IP68防护等级,可在-45~85℃极端环境下稳定运行,支持宽电压POE(9-36V)或DC供电,适用于远距离无线桥接与覆盖。其核心优势包括高带宽、高稳定性、超强抗干扰、快速无缝漫游、多重加密与安全隧道功能,并支持SNMP、SSH、API对接等远程管理协议。; 适合人群:从事工业无线通信、网络工程、智慧交通、智能制造等领域,具备一定网络基础知识的技术人员或系统集成商。; 使用场景及目标:①用于智慧交通、智慧物流、森林防火、工业4.0等复杂电磁与恶劣气候环境下的无线网络建设;②实现AMR/AGV小车、无人机、车载、船载等移动设备的高速低延时无线连接与视频传输;③构建远距离点对点或点对多点无线链路,最长传输距离可达150公里以上;④支持与第三方平台对接,实现集中化、智能化运维管理。; 阅读建议:此文档技术参数详实,建议结合具体项目需求重点查阅频段、功率、防护等级、协议支持及管理方式等内容,并参考权威认证信息确保产品合规性与可靠性。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧