0 0

java中正则的问题5

java中使用split分割字符串:怎么用正则匹配“@”、“;”、“:”但是不匹配双引号和单引号之间的内容,例如:String s ="qq@q'q@q'q;\"qqq@@qqq\"q;qq";这个字符串 拆分 完了应该是:qq 、q'q@q'q、"qqq@@qqq"q和qq
2012年7月01日 21:04

5个答案 按时间排序 按投票排序

1 0

这个用正则效率应该就低了。
大概用这种带回溯的。比如 ?>(\')@
还不如自己写个小函数, 遍历一遍就over了
该分割分割,该压栈压栈。

2012年7月02日 01:58
0 0

split的确不好解决,
使用indexof好解决的多
String s ="qq@q'q@q'q;\"qqq@@qqq\"q;qq";
如先按@分开:
int index1=s.indexof("@");
String s1=s.substring(0, index1);
s=s.substring(index1+1);
再按;分开
int index2=s.indexof(";");
String s2=s.substring(0, index2);
s=s.substring(index2+1);
......
以此类推,这种方法应该比较简单

2012年7月02日 13:48
0 0

split做不到,但是正则表达式还是可以做到的,你可以把代码再封装一下。

/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s = "qq@q'q@q'q;\"qqq@@qqq\"q;qq";
		String regex = "(([^'\"]+?)|([^']*?'[^']*?'[^']*?)|([^']*?\"[^']*?\"[^']*?))([@;:]|$)";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(s);
		while (m.find()) {
			System.out.println("==" + m.group(1));
		}

	}

2012年7月02日 10:22
0 0

	public static String[] split(String s) {
		ArrayList<String> list = new ArrayList<String>();
		int n = s.length();
		int beginIndex = 0;
		boolean hasQuot = false;
		for (int i = 0; i < n; i++) {
			char ch = s.charAt(i);
			switch (ch) {
			case '\'':
			case '"':
				hasQuot = !hasQuot;
				break;
			case '@':
			case ';':
			case ':':
				if (!hasQuot) {
					list.add(s.substring(beginIndex, i));
					beginIndex = i + 1;
				}
				break;
			}
		}
		if (beginIndex < n)
			list.add(s.substring(beginIndex));
		return list.toArray(new String[list.size()]);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s = "qq@q'q@q'q;\"qqq@@qqq\"q;qq";
		String[] a = split(s);
		for (String str : a) {
			System.out.println(str);
		}
	}

2012年7月02日 10:13
0 0

那就分两次split好了,先按照',"来split一次,再按照“@”、“;”、“:”再来split一次不就好了么
var tmp = s.split(/[\'\"]+/);
var arr;
for (i = 0; i < arr.length;i++) {
    arr = arr.concat(tmp[i].split(/[@、:]+/));
}

2012年7月02日 08:50

相关推荐

    Java中正则表达式使用方法详解

    Java中正则表达式使用方法详解 正则表达式是字符构成的串,定义了一个用来搜索匹配字符串的模式。 Java中的正则表达式使用方法详解将为读者提供一个详细的指南,了解正则表达式的基础知识和使用方法。 一、正则...

    JAVA中正则表达式详解

    JAVA中正则表达式详解

    java中正则表达式Pattern类的应用

    java中正则表达式Pattern类的应用,基本上用来验证之类的应用

    JAVA中正则表达式

    在Java中,正则表达式是通过`java.util.regex`包中的类来实现的,如`Pattern`和`Matcher`。下面将详细介绍正则表达式的常见语法和在Java中的使用。 首先,正则表达式的基本元素包括: 1. `.`:匹配任何单个字符,...

    JAVA中正则表达式的一个简单例子.pdf

    JAVA中正则表达式的一个简单例子.pdf

    浅谈Java中正则表达式的优化方法

    ### 浅谈Java中正则表达式的优化方法 在日常的软件开发过程中,正则表达式作为一种强大的文本处理工具被广泛应用于数据验证、文本搜索与替换等场景之中。尤其是在Java语言环境中,`java.util.regex`包提供了丰富的...

    JAVA中正则表达式的应用

    在Java中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分割字符串。自从JDK 1.4开始,Java提供了内置的正则表达式API,位于`java.util.regex`包中,主要包括`Pattern`和`Matcher`两个核心类。 1. ...

    Java中正则表达式使用方法详解.docx

    在本文中,我们将深入探讨Java中正则表达式的使用方法,以及如何通过它们来增强我们的代码功能。 首先,Java中的正则表达式支持是通过`java.util.regex`包提供的。这个包包含三个主要类:`Pattern`、`Matcher`和`...

    java中正则表达式使用方法

    - 当两者结合使用,如`^abc$`,则会匹配整个字符串仅由"abc"组成的文本。 2. **'*', '+', 和 '?'** - `*` 表示零个或多个前面的字符,相当于`{0,}`。例如,`ab*`匹配任何以"a"开头,后面跟着零个或多个"b"的字符...

    Java中正则表达式的应用

    有重点和调理,一看就会了. 只要涉及java两个类

    java中正则表达式实例详解

    例如,`str5.matches("//W{9}")`会匹配九个非字母、数字和下划线的字符,而`str6.matches("//w+")`则匹配一个或多个字母、数字或下划线。 6. **自定义字符集合**: `[...]`用于定义自定义字符集,如`"[fdetg]+"`...

    Java中正则表达式split()特殊符号使用详解

    Java中正则表达式split()特殊符号使用详解 Java中的split()方法是String类中的一个方法,该方法使用正则表达式来将字符串分割成多个子字符串。然而,在使用split()方法时,需要注意特殊符号的使用,否则可能会导致...

    Java中正则表达式的使用和详解(上)

    Java中正则表达式的使用和详解 Java中正则表达式的使用和详解是Java开发中非常重要的一部分。正则表达式是一种强大的字符串匹配工具,可以用来验证字符串是否符合一定的规则,或者在字符串中查询特定的字符或字符串...

    Java中正则表达式去除html标签

    在Java程序设计中,正则表达式是处理文本的强大工具,它允许我们对字符串进行模式匹配和操作。去除HTML标签是处理网页数据或用户输入时常见的需求之一,尤其是在从内容管理系统或文本编辑器中获取数据时。HTML标签的...

    JAVA中正则表达式匹配,替换,查找,切割的方法

    接下来,我们将详细介绍Java中正则表达式的使用方法,并举例说明如何使用split()方法进行字符串查找,replace()方法进行字符串替换,以及如何使用Pattern和Matcher类来获取字符串中的特定部分。 首先是字符串查找,...

    JAVA中正则表达式小总结(整理)

    正则表达式已经超出了某种语言或某个系统的局限,成为被人们广为使用的工具,我们完全可以用它来解决实际开发中碰到的一些实际的问题。  在JDK1.3及之前的JDK版本中并没有包含正则表达式的类,如果要在Java中使用...

Global site tag (gtag.js) - Google Analytics