JAVA正则表达式匹配多个空格的解决方案

目录
  • 需求
  • 解决方案
  • 扩充知识
  • ()和[]有本质的区别
  • java中,正则表达式匹配一个或多个空格 && 正则表达式匹配两个或多个空格
  • 正则表达式匹配多个空格

需求

针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法。

解决方案

利用正则表达式来匹配空格

\\s+

首先利用split("\\s+");方法来对字符串切割,尽可能的匹配空格,这里也挺有意思,因为空格数目不一样,可以动态变换匹配的空格数量,这个实现原理可以看看底层原理,挺有意思。
测试:

		String string="a   b  a  a ";
		for(String a:string.split("\\s+")){
			System.out.println(a);
		}

扩充知识

正则表达式的() [] {}有不同的意思。
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s{1,3}表示匹配一到三个空格。
(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串

()和[]有本质的区别

()内的内容表示的是一个子表达式,()本身不匹配任何东西,也不限制匹配任何东西,只是把括号内的内容作为同一个表达式来处理,
例如:(ab){1,3},就表示ab一起连续出现最少1次,最多3次。如果没有括号的话,ab{1,3},就表示a,后面紧跟的b出现最少1次,最多3次。另外,括号在匹配模式中也很重要。这个就不延伸了,LZ有兴趣可以自己查查
[]表示匹配的字符在[]中,并且只能出现一次,并且特殊字符写在[]会被当成普通字符来匹配。例如[(a)],会匹配(、a、)、这三个字符。
所以() [] 无论是作用还是表示的含义,都有天壤之别,没什么联系

java中,正则表达式匹配一个或多个空格 && 正则表达式匹配两个或多个空格

001.匹配一个或者多个的空格的正则表达式: \\s+

例:

String[] newStr = str.trim().split("\\s+");

002.匹配二个或多个空格的正则表达式 : \\s{2,}

例:

String str = new String("i am   a   good     boy!    ");
String replaceAll = str.replaceAll("\\s{2,}", " ").trim();

正则表达式匹配多个空格

preg_match_all('/<div class=\"item\">(.*?)<\/p>[\s]*<\/div>/ise',$body,$body_mat);

用[\s]*可匹配多个空格如</p> </div>

//去掉字符串中的空格
$str1 = "我是中 国 " ;
$s2 = preg_replace("/\s+/",'',$str1);
$len =mb_strlen($s2,"UTF-8") ;

到此这篇关于JAVA正则表达式匹配多个空格的文章就介绍到这了,更多相关java正则表达式匹配空格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java基于正则表达式实现查找匹配的文本功能【经典实例】

    本文实例讲述了Java基于正则表达式实现查找匹配的文本功能.分享给大家供大家参考,具体如下: REMatch.java: package reMatch; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank */ public class REMatch { public static void main(String[] args) { String patt = "Q[^

  • java如何用正则表达式匹配与提取字符串

    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法. 首先给出一个匹配字符串的例子(判断line是否符合格式"GraphType\\s*=\\s*\".+\"\\s*"): public static boolean isLegalInputLine(String line ) { Pattern p =Pattern.compile("GraphType\\s*=\\s*\&

  • java正则表达式匹配规则超详细总结

    目录 1 单个字符的匹配规则如下: 2 多个字符的匹配规则如下: 3 复杂匹配规则主要有: 4 提取匹配的字符串子段 5 非贪婪匹配 6 替换和搜索 6.1 分割字符串 6.2 搜索字符串 6.3 替换字符串 6.4 反向引用 总结 1 单个字符的匹配规则如下: 2 多个字符的匹配规则如下: 3 复杂匹配规则主要有: 4 提取匹配的字符串子段 Pattern p = Pattern.compile("(\\d{3,4})\\-(\\d{7,8})"); Matcher m = p.ma

  • java正则表达式匹配所有数字的案例

    用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9]) ( [1-9] :匹配1~9的数字: \d :匹配数字,包括0~9: * :紧跟在 \d 之后,表明可以匹配零个及多个数字: \. :匹配小数点: ? :紧跟在 \. 之后,表明可以匹配零个或一个小数点: 0 :匹配一个数字0: ) 其中的 [1-9]\d*\.?\d* 用以匹配诸如:1.23.34.0.56.78 之类的非负的整数和浮点数: 其中的 0\.\d*[1-9] 用以匹配诸如:0.1.0.23.0

  • Java正则表达式(匹配、切割、替换、获取)等方法

    正则表达式:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化书写,主要是学习一些特殊符号的使用 好处:可以简化对字符串的复杂操作. 弊端:符号定义越多,正则越长,阅读性越差 具体操作: 1.匹配:String matches方法 用规则匹配所有的字符串,只要有一个不符合,则匹配结束. 2.切割:String sqlit(); 3.替换:replaceAll(); 4.获取:将字符串中的符合规则的子串取出. 操作步骤: 首先,将正则表大式封装成

  • Java正则表达式循环匹配字符串方式

    目录 正则表达式循环匹配字符串 Java匹配正则表达式大全 我们先举个例子来看看Java匹配正则表达式 匹配表达式的特殊情况 正则表达式循环匹配字符串 public static void main(String[] args) { /** * String str = "[Part 'name=1234567']"; */ String targetStr = "where 1=1 [and user_name like '%$user_name$%'] [and comp

  • 正则表达式匹配${key}并在Java中使用的详细方法

    1.正则表达式匹配${key} \$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写英文字母) .*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${key}形式的文本 解释如下: . 匹配除换行符\n之外的任何单字符 * 匹配前面的子表达式零次或多次 要匹配*字符,请使用\* { 标记限定符表达式的开始.要匹配 {,请使用 \{ [a-z] 匹配小写字母 +匹配前面的子表达式一次或多次.要匹配+字符,请使用\+;+限定是贪婪的,因为它们会尽可能多

  • JAVA正则表达式匹配多个空格的解决方案

    目录 需求 解决方案 扩充知识 ()和[]有本质的区别 java中,正则表达式匹配一个或多个空格 && 正则表达式匹配两个或多个空格 正则表达式匹配多个空格 需求 针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法. 解决方案 利用正则表达式来匹配空格 \\s+ 首先利用split("\\s+");方法来对字符串切割,尽可能的匹配空格,这里也挺有意思,因为空格数目不一

  • Java正则表达式匹配不到结果的解决

    如下所示: String str = "\uFEFF<?xml version=\"1.0\" encoding=\"utf-8\"?><Response xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Header Should

  • Java正则表达式匹配字符串并提取中间值的方法实例

    目录 前言 场景一:提取SAML2报文 解析 场景2:提取sql中的表名和字段 总结 前言 有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提取其中的某些值. 场景一:提取SAML2报文 SAML2报文内容如下,从中提取对应的attribute name和value. <saml:AttributeStatement> <saml:Attribute Name="mail"> <saml:Attribut

  • Java正则表达式匹配电话格式

    大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. /** * 手机号:目前全国有27种手机号段. * 移动有16个号段:134.135.136.137.138.139.147.150.151.152.157.158.159.182.187.188.其中147.157.188是3G号段,其

  • java正则表达式匹配网页所有网址和链接文字的示例

    复制代码 代码如下: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.

  • Java 正则表达式匹配模式(贪婪型、勉强型、占有型)

    Greediness(贪婪型):最大匹配 X?.X*.X+.X{n,} 是最大匹配.例如你要用 "<.+>" 去匹配 "a<tr>aava </tr>abb",也许你所期待的结果是想匹配 "<tr>",但是实际结果却会匹配到 "<tr>aava </tr>. 在 Greediness 的模式下,会尽量大范围的匹配,直到匹配了整个内容,这时发现匹配不能成功时,开始回退

  • Java/Js下使用正则表达式匹配嵌套Html标签

    通用 HTML 标签区配正则 最近看网站日志,发现有人在博客上转了我不知道几年前写的一个匹配 HTML 标签的正则,刚好最近也在做一些相关的事情,顿时来了兴趣.就拿回来改改,成了下面这样,可能会有一些 case 遗漏,欢迎修改,已知在内嵌 <script> 复杂内容的处理能力较弱,不过对纯 HTML 来说已经够用,拿来做一些分析工具还是不错滴. 复制代码 代码如下: <script type="text/javascript"> var str = "

随机推荐