热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java过滤条件,用java语言怎样实现如上过滤条件

用java语言怎样实现如下过滤条件本人初学java,对于java正则表达式不是很理解,我想用java实现下面条件的字符串过滤,还请各位大侠

用java语言怎样实现如下过滤条件

本人初学java,对于java正则表达式不是很理解,我想用java实现下面条件的字符串过滤,还请各位大侠帮助。

text = X+..+A + B + C +..Y,这里,text是原字符串,B是需要过滤出来的字符串,A和C是过滤B的条件,X+..和..Y是其它的干扰字符串。

本人描述可能很不清晰,举个例来说吧:String text="the background=\"yello\",good color";,这中间X+..就是the ,A是background=\", C是\",..Y是,good color ,那么需要提取的B就是yellow.

现在问题是,A的形式可以有很多种,匹配正则表达式 : "background\\s*=\\s*\"",C也匹配正则表达式"\\s*\"",那么我应该如何提取B呢?

小弟感激不尽!

java

正则表达式

------解决方案--------------------

引用:本人初学java,对于java正则表达式不是很理解,我想用java实现下面条件的字符串过滤,还请各位大侠帮助。

text = X+..+A + B + C +..Y,这里,text是原字符串,B是需要过滤出来的字符串,A和C是过滤B的条件,X+..和..Y是其它的干扰字符串。

如果正常匹配的话,A和C不重复,那是没有什么问题的;现在的问题是A和C重合了,如果分开两次匹配的话,就是出现异常。

所以我们可以先匹配A,然后再对A后面的字串匹配C,这样就不会重合了。

我写一个字串的例子,楼主找找灵感

11161787.gif

public static void main(String[] args) {

String text = "the background=\"yello\",good color";

String A = "background=\"";

String C = "\"";

String B = getParam(text, A, C);

System.out.println("B : " + B);

}

public static String getParam(String src, String findLeft, String findRight) {

int indexFirst = -1;

int indexSecond = -1;

indexFirst = index(src, findLeft, 0);

if (indexFirst >= 0) {

indexSecond = index(src, findRight, indexFirst + findLeft.length());

if (indexSecond >= 0) {

return src.substring(indexFirst + findLeft.length(), indexSecond);

}

}

return null;

}

public static int index(String src, String obj, int indexBegin) {

int indexRet = -1;

for (int i = indexBegin, j = 0; i 

if (src.charAt(i) == obj.charAt(0)) {

while(src.charAt(j + i) == obj.charAt(j++)) {

if (j >= obj.length()) {



推荐阅读
author-avatar
我等到你不再等我_129
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有