`
53873039oycg
  • 浏览: 846777 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java使用正则得到字符串所有的字符

阅读更多

        最近看到一个有趣的问题,String str="abcd",如何使用正则得到str的所有字符,结果"a,b,c,d"。

        不是很简单吗,上代码:

       

public static void errorMethodTest(String srcStr) {
		String[] strArr = srcStr.split("");
		for (String str : strArr) {
			System.out.print(str + ",");
		}
		System.out.println();
	}

 

     结果为:

,a,b,c,d,

 

    前面多了一个""。

     如何正确的得到a,b,c,d呢?参考了博客http://www.coderanch.com/t/497299/java/java/Splitting-String-characters

     正确方法为: 

 

public static void strSplitMethodTest(String srcStr) {
		String[] strArr = srcStr.split("(?<!^)");
		for (String s : strArr) {
			System.out.print(s + ",");
		}
		System.out.println();
	}

 

   或者

 

public static void strSplitMethod2Test(String srcStr) {
		String[] strArr = srcStr.split("(?!^)");
		for (String str : strArr) {
			System.out.print(str + ",");
		}
		System.out.println();
	}

    上面的那玩意是什么呢?是正则表达式中的反向预查,正向预查,参考了博客http://my.oschina.net/lxpan/blog/27907

 

    (?<=pattern) 反向匹配
    (?<!pattern) 反向不匹配

    (?=pattern) 正向匹配
    (?!pattern) 正向不匹配

 

     测试例子:

public static void myTest() {
		String testStr = "foreach eachfor forall allfor alleach eachall";
		Pattern p = Pattern.compile("(?<!for)each");// 匹配任何前面不带有for的each
		Matcher match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("--------------------------------");
		p = Pattern.compile("(?<=for)each");// 匹配任何前面带有for的each
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("-------------------------------");
		p = Pattern.compile("for(?!each)");// 会匹配任何后面不是each的for
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("-------------------------------");
		p = Pattern.compile("for(?=each)");// 会匹配任何后面是each的for
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
	}

 

     结果为:

   

each
each
each
--------------------------------
each
-------------------------------
for
for
for
-------------------------------
for

 

   上面的不够直观,使用RegexBuddy软件结果如下:

  

 

  

 

 

     不使用正则怎么做呢

    

public static void strMethodTest(String srcStr) {
		char[] strArr = srcStr.toCharArray();
		for (char c : strArr) {
			System.out.print(c + ",");
		}
		System.out.println();
	}

 

     全文完

 

 

 

 

 

    

 

 

  

 

 

 

 

  • 大小: 70.1 KB
  • 大小: 73.5 KB
  • 大小: 69.6 KB
  • 大小: 79.3 KB
0
2
分享到:
评论

相关推荐

    Java根据正则表达式生成字符串—Xeger,automaton

    在Java编程语言中,处理字符串和正则表达式是一项常见的任务。正则表达式是一种强大的文本模式匹配工具,可以用于搜索、替换或者提取符合特定规则的字符串。在本篇文章中,我们将深入探讨如何利用Java中的Xeger和...

    java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。

    java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。

    Java 正则表达式判断字符串是否包含中文

    ### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...

    java 正则匹配所有 {},并取出所有符合的字符串。

    这里我们关注的是如何使用正则表达式来匹配所有包含在花括号 `{}` 中的字符串,并将其提取出来。这在处理模板引擎、编程语言语法解析或数据替换等场景中非常常见。 首先,我们需要了解Java中处理正则表达式的相关类...

    java正则表达式替换字符串

    本文将详细介绍如何使用Java正则表达式进行字符串替换,并通过具体的代码示例来展示其实现过程。 #### 二、基础知识 ##### 1. 正则表达式简介 正则表达式(Regular Expression),通常被简称为regex或regexp,是一...

    java 字符串 正则表达式 详细实例代码

    本篇将深入探讨Java中的字符串、正则表达式及其在实际编程中的详细实例代码。 1. **字符串基础** - Java中的字符串是不可变的,这意味着一旦创建了字符串对象,就不能更改其内容。这由`final`关键字确保,提高了...

    Java使用正则表达式提取XML节点内容的方法示例

    Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧。 一、正则表达式简介 正则表达式是指一...

    使用正则表达式拆分字符串

    在本教程中,我们将深入探讨如何使用正则表达式来拆分字符串,这对于数据处理和文本分析尤其有用。下面将详细阐述正则表达式的概念、语法以及如何在不同编程语言中实现字符串的拆分。 1. 正则表达式基础 - **模式...

    根据正则表达式生成随机字符串

    根据java正则表达式生成一个随机的字符串,具体可以去一下网站看:https://code.google.com/p/xeger/

    Java正则表达式提取字符的方法实例

    本文将详细介绍如何使用Java正则表达式提取字符串中的特定字符。 首先,了解什么是正则表达式是非常有必要的。正则表达式(Regular Expression)是一种特殊字符序列,用于匹配一组字符串。在Java中,通过java.util....

    jJAVA正则表达式替换字符

    其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"&lt;title&gt;XXXX&lt;/title&gt;"中的文字XXXX,用正则表达式获取指定字符串内容中的指定内容,...

    java使用正则表达式判断手机号的方法示例

    2. java正则表达式的使用:java使用正则表达式可以实现手机号的匹配操作。正则表达式可以定义模式来匹配字符串,例如,"^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"这个正则表达式可以匹配大多数的手机号码。 3...

    将已知字符串的符合一定规则(指定正则)的子字符串取出(步骤笔记)

    将已知字符串的符合一定规则(指定正则)的子字符串取出(步骤笔记)

    Java 使用正则表达式对象实现正则的获取功能

    在 Java 中,使用正则表达式对象可以实现各种字符串匹配和提取操作。正则表达式对象主要通过 Pattern 和 Matcher 两个类来实现。下面详细介绍如何使用正则表达式对象实现正则获取功能。 一、基本概念 在使用正则...

    Java正则表达式判断字符串中是否包含中文示例

    之前一个朋友问我,如何判断字符串中是否包含中文,其实解决的方法很简单,但觉着有必要写出给不知道的朋友们以参考,所以下面这篇文章主要介绍了利用Java正则表达式判断字符串中是否包含中文的方法,需要的朋友可以...

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    Java实现字符串匹配(基于正则)

    Java中的字符串匹配功能强大且灵活,尤其是当结合正则表达式使用时。正则表达式是一种强大的文本处理工具,允许我们以一种简洁的方式定义复杂的搜索模式。在Java中,`java.util.regex` 包提供了对正则表达式的支持,...

    java验证字符串是否符合json格式

    在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...

    java基于正则提取字符串中的数字功能【如提取短信中的验证码】

    本篇文章将详细讲解如何利用Java的正则表达式功能来从字符串中提取数字,特别是在短信验证码提取场景中的应用。 首先,我们需要理解正则表达式的概念。正则表达式是由特殊字符和普通字符组成的字符串,它定义了一种...

Global site tag (gtag.js) - Google Analytics